Newsgroup: it.comp.lang.javascript
Titolo: Filesystem in Mozilla Firefox

Salve,
ho l'esigenza di uploadare file utilizzando "XMLHTTP".
Su IE non ho problemi, utlizzando "ADODB.Stream"; la cosa si complica
tantissimo su Mozilla.
In rete ho trovato lo script allegato:
<script>
if (typeof(JSIO) != 'boolean') {
 var JSIO = true;
 var FileIO = {
			   localfileCID  : '@
mozilla.org/file/local;1
',
			   localfileIID  : Components.interfaces.nsILocalFile,
			   finstreamCID  : '@
mozilla.org/network/file-input-stream;1
',
			   finstreamIID  : Components.interfaces.nsIFileInputStream,
			   foutstreamCID : '@
mozilla.org/network/file-output-stream;1
',
			   foutstreamIID : Components.interfaces.nsIFileOutputStream,
			   sinstreamCID  : '@
mozilla.org/scriptableinputstream;1
',
			   sinstreamIID  : Components.interfaces.nsIScriptableInputStream,
			   suniconvCID   : '@
mozilla.org/intl/scriptableunicodeconverter
',
			   suniconvIID   :
Components.interfaces.nsIScriptableUnicodeConverter,
			   open : function (path) {
									   try {
											var file =
Components.classes[this.localfileCID].createInstance(this.localfileIID);
											file.initWithPath(path);
											return file;
										   } catch(e) { return e; }
									  },
			   read : function (file, charset) {
												try {
													 var data = new String();
													 var fiStream =
Components.classes[this.finstreamCID].createInstance(this.finstreamIID);
													 var siStream =
Components.classes[this.sinstreamCID].createInstance(this.sinstreamIID);
													 fiStream.init(file, 1, 0, false);
													 siStream.init(fiStream);
													 data += siStream.read(-1);
													 siStream.close();
													 fiStream.close();
													 if (charset) data = this.toUnicode(charset, data);
													 return data;
													} catch(e) { return e; }
											   },
			   write : function (file, data, mode, charset) {
															 try {
																  var foStream =
Components.classes[this.foutstreamCID].createInstance(this.foutstreamIID);
																  if (charset) data = this.fromUnicode(charset,
data);
																  var flags = 0x02 | 0x08 | 0x20; // wronly |
create | truncate
																  if (mode == 'a') flags = 0x02 | 0x10; // wronly
| append
																  foStream.init(file, flags, 0664, 0);
																  foStream.write(data, data.length);
																  // foStream.flush();
																  foStream.close();
																  return true;
																 } catch(e) { return e; }
															},
			   create : function (file) {
										 try {
											  file.create(0x00, 0664);
											  return true;
											 } catch(e) { return e; }
										},
			   unlink : function (file) {
										 try {
											  file.remove(false);
											  return true;
											 } catch(e) { return e; }
										},
			   path : function (file) {
									   try { return 'file:///' + file.replace(/\\/g,
'\/').replace(/^\s*\/?/, '').replace(/\ /g, '%20'); }
									   catch(e) { return e; }
									  },
			   toUnicode : function (charset, data) {
													 try {
														  var uniConv =
Components.classes[this.suniconvCID].createInstance(this.suniconvIID);
														  uniConv.charset = charset;
														  data = uniConv.ConvertToUnicode(data);
														 } catch(e) { return e; }
														 return data;
													},
			   fromUnicode : function (charset, data) {
													   try {
															var uniConv =
Components.classes[this.suniconvCID].createInstance(this.suniconvIID);
															uniConv.charset = charset;
															data = uniConv.ConvertFromUnicode(data);
															// data += uniConv.Finish();
														   } catch(e) { return e; }
														   return data;
													  }
			  }
 var DirIO = {
			  sep : '/',
			  dirservCID : '@
mozilla.org/file/directory_service;1
',
			  propsIID : Components.interfaces.nsIProperties,
			  fileIID : Components.interfaces.nsIFile,
			  get : function (type) {
									 try {
										  var dir =
Components.classes[this.dirservCID].createInstance(this.propsIID).get(type,
this.fileIID);
										  return dir;
										 } catch(e) { return e; }
									},
			  open : function (path) { return FileIO.open(path); },
			  create : function (dir) {
									   try {
											dir.create(0x01, 0664);
											return true;
										   } catch(e) { return e; }
									  },
			  read : function (dir, recursive) {
												var list = new Array();
												try {
													 if (dir.isDirectory()) {
													  if (recursive == null) recursive = false;
													  var files = dir.directoryEntries;
													  list = this._read(files, recursive);
													 }
													} catch(e) { return e; }
													return list;
											   },
			  _read  : function (dirEntry, recursive) {
													   var list = new Array();
													   try {
															while (dirEntry.hasMoreElements()) {
 
list.push(dirEntry.getNext().QueryInterface(FileIO.localfileIID));
															}
															if (recursive) {
															 var list2 = new Array();
															 for (var i = 0; i < list.length; ++i) {
															  if (list[i].isDirectory()) {
															   files = list[i].directoryEntries;
															   list2 = this._read(files, recursive);
															  }
															 }
															 for (i = 0; i < list2.length; ++i)
list.push(list2[i]);
															}
														   } catch(e) { return e; }
														   return list;
													  },
			  unlink : function (dir, recursive) {
												  try {
													   if (recursive == null) recursive = false;
													   dir.remove(recursive);
													   return true;
													  } catch(e) { return e; }
												 },
			  path : function (dir) { return FileIO.path(dir); },
			  split : function (str, join) {
											var arr = str.split(/\/|\\/), i;
											str = new String();
											for (i = 0; i < arr.length; ++i) {
											 str += arr[i] + ((i != arr.length - 1) ? join : '');
											}
											return str;
										   },
			  join : function (str, split) {
											var arr = str.split(split), i;
											str = new String();
											for (i = 0; i < arr.length; ++i) {
											 str += arr[i] + ((i != arr.length - 1) ? this.sep : '');
											}
											return str;
										   }
			 }
 if (navigator.platform.toLowerCase().indexOf('win') > -1) {
DirIO.sep = '\\'; }
}
</script>
che purtroppo non so se funziona,
perchè mi genera il seguente errore: "Permesso negato per ottenere la
proprietà UnnamedClass.classes".
Non riesco proprio a capire come risolvere il tutto,
posso solo sperare in voi Geni!!
DarCas The Architect
-----------------------
http://www.darcas.net/
------------------------------------------
Tutti sanno che una cosa é impossibile da realizzare,
finché arriva uno sprovveduto che non lo sa e la inventa.
(Albert Einstein)
--  
Postato da Virgilio Newsgroup 
http://newsgroup.virgilio.it
Completo come il newsreader, ma senza il newsreader

Non riesco proprio a capire come risolvere il tutto,
Dipende da dove usi lo script.
Se in locale puoi provare a fornirgli i privilegi per accedere a
XPCOM:
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Che chiedera' all'utente se vuole permettere l'uso di XPCOM
In locale con Mozilla protresti teoricamente creare un'applicazione
installata nel chrome system ed eviti anche la necessita' di
enablePrivilege.
Se sei su Web ti serve un signed script.
'bye

 
Prima di tutto grazie,
se stato molto preciso ed esaustivo.
Ora però vorrei avere maggiori informazioni sul "Signed Script".


 ha scritto nel messaggio 
news:3089095.
1114069840570
.JavaMail.newsgroup@sc-ng-1...


 Nessuno sa aiutarmi in questo senso?
Se cerchi in 
mozilla.org
, del tipo
http://www.google.com/custom?cof=LW%3A174%3BLH%3A60%3BL%3Ahttp%3A%2F%2Fwww.mozilla.org%2Fimages%2Fmlogosm.gif%3BGIMP%3A%23cc0000%3BT%3Ablack%3BALC%3A%230000ff%3BGFNT%3Agrey%3BLC%3A%23990000%3BBGC%3Awhite%3BAH%3Acenter%3BVLC%3Apurple%3BGL%3A0%3BGALT%3A%23666633%3BAWFID%3A9262c37cefe23a86%3B&domains=mozilla.org&sitesearch=mozilla.org&q=signed+script
troverai parecchie info a riguardo...
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.