2014-01-26 60 views
0

我想使用chrome.fileSystem API在C:/或任何位置創建一個新文件,但我無法弄清楚如何使用此API。我如何使用Chrome App文件系統API

我找不到文件路徑的任何參數,只有東西是fileEntry,但我怎麼能用類似C:// a/b/c的東西生成fileEntry?

回答

0

工作起來有點棘手。但它遵循其他語言使用的相同模型,除了因爲所有回調而更加詭計外。這是我寫的一個函數,用於獲取嵌套文件條目,創建目錄。也許這可以幫助你開始。

對於這個函數,你傳遞一個FileSystem,你可以從類似chrome.fileSystem.chooseEntry的類中獲得一個目錄類型選項,路徑將在你的例子中['a','b','c ']

function recursiveGetEntry(filesystem, path, callback) { 
    function recurse(e) { 
     if (path.length == 0) { 
      if (e.isFile) { 
       callback(e) 
      } else { 
       callback({error:'file exists'}) 
      } 
     } else if (e.isDirectory) { 
      if (path.length > 1) { 
       e.getDirectory(path.shift(), {create:true}, recurse, recurse) 
      } else { 
       e.getFile(path.shift(), {create:true}, recurse, recurse) 
      } 
     } else { 
      callback({error:'file exists'}) 
     } 
    } 
    recurse(filesystem) 
} 
3

對於安全原因,Chrome應用程序有限制 - 可以訪問哪些文件。基本上,用戶需要批准從應用程序訪問所訪問的文件和目錄。

訪問應用程序沙箱外的文件的唯一方法是通過用戶手勢 - 也就是說,您需要詢問用戶文件。你可以用chrome.fileSystem.chooseEntry來做到這一點。

如果這不是很明顯,也許你可以解釋更多關於你正在試圖處理這些文件的信息,我們可以給出建議,告訴你如何做到這一點。通常chrome.fileSystem不是數據存儲的最佳選擇 - 還有其他更方便和沙盒交替的方式,如chrome.storage

+0

我想存儲文件到一個真正的本地驅動器,沒有任何對話或其他任何東西。它應該在後臺完成,而不需要任何手動操作。我曾經使用NPAPI來做到這一點,但現在我找不到任何替代方案。 –

+0

當然,NPAPI可以做很多事情。它是未經裝箱和不安全的。你應該提出另一個問題來解釋你試圖解決什麼問題。例如。它是用戶數據,還是用戶首選項,還是內部緩存/數據庫?這些都可以完成,但有不同的工具,每個工具適合不同類型的任務。 –

相關問題