2012-09-19 19 views

回答

3

我有一些對話與參與打包應用程序開發人員,今天,因爲它是你不能有沒有提醒我們的應用程序沙箱之外訪問文件系統。但它可能會在未來。

但有一個叫做節點的Webkit新項目,這是非常相似的Chrome封裝應用程序,你用HTML,JS等開發你的應用程序在Chrome瀏覽器,也可以運行在瀏覽器的NodeJS。使用這個你可以訪問文件系統和更多的東西。

看看這裏: https://github.com/rogerwang/node-webkithttps://github.com/rogerwang/node-webkit/wiki

加載和保存文件節點WebKit是很容易的。它看起來像這樣

var gui = require("nw.gui"); 
var fs = require("fs"); 

//Save 
fs.writeFile('message.txt', 'Hello Node', function (err) { 
    if (err) throw err; 
    console.log('It\'s saved!'); 
}); 

//Load 
fs.readFile('message2.txt', 'utf8', function (err, data) { 
    if (err) throw err; 
    console.log(data); 
}); 
-1

種的。您可以保存到應用程序的「工作區」,這意味着該文件將被保存,但用戶或其他應用程序將無法訪問該文件。它將位於沙箱存儲區。要做到這一點,只需使用HTML5 Filesystem API(tutorial here)。

您需要:"permissions": ["storage"]在你的清單,並在您的JS,你可以這樣做:

var onInitFsCallback=function(fs) { 
    fs.root.getFile('log.txt', {create: true}, function(fileEntry) { 
    fileEntry.createWriter(function(fileWriter) { 
     _this.fileWriter = fileWriter; 
     fileWriter.onwriteend = onWriteEndCallback; 
     fileWriter.onerror = onErrorCallback; 
     fileWriter.write(myBlob); 
     fileWriter.write(myString); 
    }, errorHandler); 

    }, errorHandler); 

}; 
window.webkitRequestFileSystem([window.TEMPORARY or window.PERMANENT], sizeInBytes, 
    onInitFsCallback, onErrorCallback); 

您還可以檢查您的應用程序與檢查工具的文件系統(資源 - >文件系統)。從那裏,你可以下載或刪除文件。在Chrome 24中,您需要在chrome://標誌中啓用開發人員工具實驗,單擊DevTools設置菜單中的實驗並啓用文件系統檢查。

在另一方面,如果你想在任意位置來保存您的應用程序的沙箱外的,是出於安全的需要用戶提示。

+0

感謝我會看看那個。你確定它可以在Packaged App中工作嗎? – arpo

+0

是的,它會的。您需要:' 「權限」: 「存儲」]'在你的清單,並在您的JS使用: 'VAR onInitFs =功能(FS){ fs.root.getFile( 'log.txt的',{創建:真},函數(FileEntry的){ fileEntry.createWriter(函數(的FileWriter){ fileWriter.onwriteend = onWriteEndCallback; fileWriter.onerror = onErrorCallback; fileWriter.write(...); }的ErrorHandler); },errorHandler); }; (window.TEMPORARY或window.PERMANENT],sizeInBytes,onInitFsCallback,onErrorCallback); ' – mangini

+0

(抱歉評論中的格式不正確,請將其添加到答案中) – mangini