在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'));
});
});
}
}
}
在此基础上:
在写这篇文章的时候, 谷歌浏览器9+拥有国内唯一的工作 执行文件系统的API。 由于文件/配额管理目前还没有专门的浏览器用户界面 ,因此无法在不运行的情况下使用API Chrome与 - 无限制配额文件标志(注意:如果您正在构建应用程序或者Chrome网上应用店的 扩展, unlimitedStorage清单文件 权限就足够了)。在http://www.html5rocks.com/tutorials/file/filesystem/#toc-support
发现
我假设你使用的是Chrome,并且您还没有设置--unlimited配额换文件标志
刚刚使用localStorage怎么办?
我已经看过关于将文件写入本地系统的HTML5 fileSystem API的教程,我相信我遵循了每一步,但是我还没有能够在本地系统中看到我的日志文件。有什么建议? – Derek 2011-03-25 07:46:25
我修改了我的问题,以前的问题已经解决了,并且我遇到了一个新问题。请引导我,提前谢谢。 – Derek 2011-03-26 07:37:47
localStorage可能是最简单的选择。即使在指定''unlimitedStorage''权限后,唯一的缺点是限制为5 MB。像这样使用它: 'localStorage [“log”] =“Hello World!”'写入,而 'log = localStorage [“log”]'读取。 – 2012-07-30 21:11:58
这个文件系统API似乎并没有真正写真正的“文件”到您的硬盘。 它似乎将文件存储在浏览器中的沙盒安全区域内。 你必须写一个快速和肮脏的小文件管理器(或找到一个)来管理给定的Web应用程序的文件。您还可以尝试访问filesystem://<your URL here>/temporary/
以查看您的应用创建的所有文件。
一个变化:文件系统:http // /临时/ – 2013-02-18 21:47:45
可以从浏览器外部访问写入的文件吗?假设我写了一个文本文件,我可以在外部文本编辑器中以某种方式打开它吗? – ycomp 2016-05-20 23:56:06
您是否正在编写Chrome扩展?如果是这样,请指定(在标签和/或问题中)。 – Martijn 2011-03-25 07:56:15
尝试向requestFileSystem调用添加错误回调以显示任何错误。 – HBP 2011-03-25 12:14:02
我修改了我的问题,以前的问题已经解决了,并且我遇到了一个新问题。请引导我,提前谢谢。 – Derek 2011-03-26 07:37:05