3 Rakka.canAccessLocalFile = function () {
4 return $.browser.mozilla;
7 var loadBin_mozilla = function (localFile) {
8 /* localFile: nsILocalFile */
11 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
14 alert("Permission to read local file was denied. " +
15 "Open about:config and check that " +
16 "signed.applets.codebase_principal_support is set to true.");
20 = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(
21 Components.interfaces.nsIFileInputStream);
22 stream.init(localFile, 0x01, 00004, null);
25 = Components.classes["@mozilla.org/network/buffered-input-stream;1"].getService();
26 bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
27 bstream.init(stream, 1000);
28 bstream.QueryInterface(Components.interfaces.nsIInputStream);
31 = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(
32 Components.interfaces.nsIBinaryInputStream);
33 binary.setInputStream(stream);
35 return binary.readBytes(binary.available());
38 var selectFile_mozilla = function (title, mode) {
40 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
43 alert("Permission to select local file was denied. " +
44 "Open about:config and check that " +
45 "signed.applets.codebase_principal_support is set to true.");
48 var nsIFilePicker = Components.interfaces.nsIFilePicker;
52 modeID = nsIFilePicker.modeOpen;
54 else if (mode == "save") {
55 modeID = nsIFilePicker.modeSave;
57 else if (mode == "getFolder") {
58 modeID = nsIFilePicker.modeGetFolder;
60 else if (mode == "modeOpenMultiple") {
61 modeID = nsIFilePicker.modeOpenMultiple;
64 throw new Error("Unknown file picker mode: " + mode);
67 var picker = Components
68 .classes["@mozilla.org/filepicker;1"]
69 .createInstance(nsIFilePicker);
70 picker.init(window, title, modeID);
71 picker.appendFilters(nsIFilePicker.filterAll);
73 var ret = picker.show();
74 if (ret == nsIFilePicker.returnOK || ret == nsIFilePicker.returnReplace) {
82 Rakka.selectFile = function (title, mode) {
83 if ($.browser.mozilla) {
84 return selectFile_mozilla(title, mode);
87 throw new Error("It's not possible to select local files using JavaScript with your browser. Consider using Firefox.");
91 Rakka.loadLocalBinaryFile = function (file) {
92 if ($.browser.mozilla) {
93 return loadBin_mozilla(file);
96 throw new Error("It's not possible to load local files using JavaScript with your browser. Consider using Firefox.");