在Chrome扩展程序中写入本地文件系统

时间:2011-03-25 07:06:29

标签: javascript google-chrome google-chrome-extension

chrome.tabs.onUpdated.addListener(checkForValidUrl);
function checkForValidUrl(tabId, changeInfo, tab) {
    if (tab.url.indexOf('https') > -1) {
        var tabURL = tab.url;
        console.log("\n<TimeStamp>" + getTimestamp() + "</TimeStamp><Browser>Chrome</Browser><URL>" + tabURL + "</URL>\n");
        window.requestFileSystem(window.PERSISTENT, 5 * 1024 * 1024, initFs);

        function initFs(fs) {
            fs.root.getFile
            ('log.txt', { create: true, exclusive: true }, function (fileEntry) {
                fileEntry.isFile = true;
                fileEntry.name = 'log.txt';
                fileEntry.fullPath = '/log.txt';
                fileEntry.createWriter(function (fileWriter) {
                    fileWriter.seek(fileWriter.length);
                    var bb = new BlobBuilder();
                    bb.append("\n<TimeStamp>" + getTimestamp() + "</TimeStamp><Browser>Chrome</Browser><URL>" + tabURL + "</URL>\n");
                    fileWriter.write(bb.getBlob('text/plain'));
                });
            });
        }
    }
}

3 个答案:

答案 0 :(得分:10)

基于此:

  

在撰写本文时,   谷歌Chrome 9+是唯一有效的   FileSystem API的实现。   由于专用浏览器UI没有   还存在文件/配额管理,   没有运行就无法使用API   Chrome与   --unlimited-quota-for-files标志(注意:如果您正在构建应用程序或   Chrome网上应用店的扩展程序,   unlimitedStorage清单文件   许可就足够了。)

发现于http://www.html5rocks.com/tutorials/file/filesystem/#toc-support

我假设您使用的是Chrome,而您尚未设置--unlimited-quota-for-files标志

答案 1 :(得分:7)

此文件系统API似乎并未真正将真正的“文件”写入您的硬盘。 它似乎将文件存储在浏览器的沙盒安全区域中。 您将不得不编写一个快速而肮脏的小文件管理器(或在那里找到一个)来管理给定Web应用程序的文件。您还可以尝试访问filesystem://<your URL here>/temporary/以查看您的应用已创建的所有文件。

答案 2 :(得分:1)

使用localStorage怎么样?