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

问题描述:

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')); 
       }); 
      }); 
     } 
    } 
} 
+1

您是否正在编写Chrome扩展?如果是这样,请指定(在标签和/或问题中)。 – Martijn 2011-03-25 07:56:15

+0

尝试向requestFileSystem调用添加错误回调以显示任何错误。 – HBP 2011-03-25 12:14:02

+0

我修改了我的问题,以前的问题已经解决了,并且我遇到了一个新问题。请引导我,提前谢谢。 – Derek 2011-03-26 07:37:05

在此基础上:

在写这篇文章的时候, 谷歌浏览器9+拥有国内唯一的工作 执行文件系统的API。 由于文件/配额管理目前还没有专门的浏览器用户界面 ,因此无法在不运行的情况下使用API​​ Chrome与 - 无限制配额文件标志(注意:如果您正在构建应用程序或者Chrome网上应用店的 扩展, unlimitedStorage清单文件 权限就足够了)。在http://www.html5rocks.com/tutorials/file/filesystem/#toc-support

发现

我假设你使用的是Chrome,并且您还没有设置--unlimited配额换文件标志

+0

如果我要在清单文件中添加权限“unlimitedStorage”,它会提示我“清单不是有效的JSON,syntex错误。什么问题? – Derek 2011-03-26 05:13:18

+0

清单文件必须是有效的JSON语法。 /code.google.com/chrome/extensions/manifest.html#permissions – HBP 2011-03-26 05:42:55

+0

我编辑了对我的问题所做的更改,之前的问题已得到解决,并且我遇到了一个新问题。请引导我,提前致谢。 – Derek 2011-03-26 07:38:12

刚刚使用localStorage怎么办?

+0

我已经看过关于将文件写入本地系统的HTML5 fileSystem API的教程,我相信我遵循了每一步,但是我还没有能够在本地系统中看到我的日志文件。有什么建议? – Derek 2011-03-25 07:46:25

+0

我修改了我的问题,以前的问题已经解决了,并且我遇到了一个新问题。请引导我,提前谢谢。 – Derek 2011-03-26 07:37:47

+0

localStorage可能是最简单的选择。即使在指定''unlimitedStorage''权限后,唯一的缺点是限制为5 MB。像这样使用它: 'localStorage [“log”] =“Hello World!”'写入,而 'log = localStorage [“log”]'读取。 – 2012-07-30 21:11:58

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

+0

一个变化:文件系统:http // /临时/ – 2013-02-18 21:47:45

+0

可以从浏览器外部访问写入的文件吗?假设我写了一个文本文件,我可以在外部文本编辑器中以某种方式打开它吗? – ycomp 2016-05-20 23:56:06