2013-10-18 27 views
2

我正在創建一個開發工具,該工具將基於SVG精靈表圖形文件創建CSS。該腳本需要將CSS寫回到/public/css/main.css。所以,不,我對沙盒文件結構不感興趣(儘管這很酷)。使用Javascript寫入到Chrome和/或Firefox內的文件

請記住,這不是生產。它僅僅是簡化我們的工作流程的開發工具(並希望有益於網頁設計/開發人員社區)。我調查了--allow-file-access鉻開關,但仍然不確定它是否允許寫入權限。

所以,我的問題是:如何使用在瀏覽器中運行的JavaScript將文件寫入文件?請記住,這不是爲了生產。

+0

已經回答:[如何使用Javascript讀取和寫入文件](http://stackoverflow.com/questions/585234/how-to-read-and-write-into-file-using-javascript)或[使用Javascript寫入文本文件](http://stackoverflow.com/questions/13436398/use-javascript-to-write-to-text-file) – Deviljho

回答

0

答案很簡單:

瀏覽器的

不可能由於安全限制。

您可以添加標記,如:

--allow-file-access 

Chrome操作系統上,文件:除了某些列入白名單的目錄//訪問被禁用。此開關重新啓用file://進行測試。

--allow-file-access-from-files 

默認情況下,file:// URIs不能讀取其他file:// URIs。對於那些需要舊測試行爲的開發人員來說,這是一種優先考慮。

但所有這些都是爲了閱讀。我懷疑你會用這種方法取得成功。 MMaybe你應該切換到node.js。在那裏,你可以讀/寫文件(我認爲)

更新

對於鉻,你可以創建一個NaCL-extension。還有就是禁用的NaCl extenations的snadbox標誌:--allow-nacl-file-handle-api

PS: 我認爲瀏覽器將是最困難的運行環境編寫的文件,因爲:

  1. 沒有(或至少是)無文件-API
  2. 文件API無法訪問主機文件系統
  3. 瀏覽器開發盡最大努力創建沙箱。
0

我不認爲這是可行的鉻/火狐瀏覽器,但我看過webkit desktop application SDK's。這些類型的SDK應該有文件I/O API的

tide SDK看起來很有趣。

+1

phonegap或corodva也有用於桌面應用程序的端口。 –

+0

看起來這將是最合乎邏輯的方向:創建某種類型的Chrome擴展或應用程序。對於我想要做的事情,這似乎有點誇張,但可行。 – risingtiger

+0

任何指向適用於應用程序/擴展開發的chrome文件I/O在線文檔的指針? – risingtiger

0

如果您沒有製作Chrome/Firefox擴展程序或桌面應用程序(根據您的說法,我確信您不是),那麼在瀏覽器中無法使用Javascript來做到這一點。您應該使用服務器端語言來實現此類功能,也許可以將更改直接發送到服務器,然後再發回給客戶端,但我認爲這不符合您的需求。

+0

目前我正在使用服務器端腳本來接收css字符串並將其保存迴文件。這使這個工作流程在項目和團隊成員中的部署變得複雜,所以希望有一個更簡潔的自包含方法。 – risingtiger

+0

@risingtiger AFAIK實現這一目標的唯一方法(和**也許**更簡單)就是創建一個瀏覽器擴展。你可以做的其他事情是允許他們下載(如果需要,也可以上傳)這個新創建的css作爲一個文件,但這也可能使事情變得複雜。 – Deviljho

+0

我走下了在Chrome中創建擴展的路徑,但是,唉,碰上了路障。 Chrome在擴展清單文件中提供一個選項以允許文件訪問權限(必須由用戶驗證)。其語法如下:「permissions」:[「file:// *」,...]。我還沒有找到任何關於此的可靠文檔,但到目前爲止,我得出結論,它只允許讀取任何文件的特權,但不具有寫入特權。 – risingtiger

0

您可能值得您花時間去探索File-System API

生成的文件存儲在Chrome應用程序數據中。您無法在文件系統的其他位置寫入文件。然而,也許一個腳本來抓取應用程序數據中的文件,並拉到另一個目錄後運行可能就足夠了?

這是目前只在少數瀏覽器中可用,Chrome是絕對包括在內。

相關問題