簡體   English   中英

如何在Mozilla Firefox中使用javascript創建文件

[英]How to create a file using javascript in Mozilla Firefox

我想在javascript中編寫一個函數,它創建一個文件並寫一些內容給它,我在使用firefox,在這種情況下,任何人都可以幫助我。

謝謝...

您可以在Firefox中使用JavaScript編寫文件,但必須使用XPCOM對象(內部瀏覽器API)。 對於從網頁加載的JavaScript,不允許這樣做,並且它旨在由在Firefox附加組件中運行的JavaScript(具有高級別權限)使用。

有一種方法可以讓非特權(網頁)JavaScript請求更多權限,如果用戶授予它(會有一個彈出對話框要求權限),網頁代碼就能寫入文件。

但在你進一步閱讀之前,警告:

這不是標准的JavaScript,我不推薦這種方法,除非你正在開發一個非常特定的應用程序,它將以一種非常具體的方式使用(例如, http ://www.tiddlywiki.com/客戶端JavaScript -HTML only wiki)。

在網站上請求XPCOM權限是一種不好的做法! 它基本上等同於運行您剛從站點下載的.exe。 您要求用戶使用運行Firefox的用戶的身份授予對其計算機的完全訪問權限(讀取,寫入,執行)。

請求使用XPCOM的權限(這將提示用戶進行確認,無法避免):

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

然后,使用XPCOM對象(Mozilla Developer Network的示例代碼)寫入文件:

   1. // file is nsIFile, data is a string  
   2. var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].  
   3.                          createInstance(Components.interfaces.nsIFileOutputStream);  
   4.   
   5. // use 0x02 | 0x10 to open file for appending.  
   6. foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);   
   7. // write, create, truncate  
   8. // In a c file operation, we have no need to set file mode with or operation,  
   9. // directly using "r" or "w" usually.  
  10.   
  11. // if you are sure there will never ever be any non-ascii text in data you can   
  12. // also call foStream.writeData directly  
  13. var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].  
  14.                           createInstance(Components.interfaces.nsIConverterOutputStream);  
  15. converter.init(foStream, "UTF-8", 0, 0);  
  16. converter.writeString(data);  
  17. converter.close(); // this closes foStream  

您可以在此處使用XPCOM在Firefox中找到有關I / O的更多信息: https//developer.mozilla.org/en-US/docs/Code_snippets/File_I_O

來自網站的Javascript無法訪問本地文件系統。

如果您想存儲數據,請將其存儲在服務器或cookie中。

出於安全原因,禁止直接從瀏覽器寫入文件系統。 但是使用html5,可以獲得離線存儲支持。 看看這里

格茲,克里斯。

Javascript在客戶端上下文中執行。

http://www.tek-tips.com/viewthread.cfm?qid=1171273&page=1

這個..文件編寫器API將有一個API。 早期規范如下: http//www.w3.org/TR/file-writer-api/它尚未在任何瀏覽器中實現。

更新:似乎已經存在一個實現。 查看http://caniuse.com/filesystemhttp://www.html5rocks.com/en/tutorials/file/filesystem/

雖然每個回復javascript都沒有能力在遠程服務器上寫文件的人都是正確的,但出於安全原因這是正確的,你想要完成的事情仍然是可能的。

例如,如果您希望使用javascript在網站上創建文件,則可以使用某些服務器端腳本語言和AJAX調用來實現。

例:

您的服務器上有一個名為update_last_access.php的文件,它將創建一個文件,用於存儲上次在某個任意文件中訪問文件的時間。

如果你有你的javascript函數對該腳本進行AJAX調用,例如,在jquery中

$.get("update_last_access.php")

然后,這將執行服務器端腳本並寫入該文件。

在為您提供更多幫助之前,您必須澄清您要做的事情。

您可以使用Firefox 3.6從JavaScript文件系統中讀取文件 - 例如,請參閱我的EPUB讀者概念驗證

但是,您無法直接從JavaScript編寫文件。 你必須通過服務器。

Mozilla計划將FileSaver包含在Gecko 9中: https ://bugzilla.mozilla.org/show_bug.cgi?id = 557540

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM