我需要写一个来自chrome扩展名的文件。我读到我可以使用html5文件API。我复制了一个我在网上找到的简单代码,但它得到了FileError.NOT_FOUND_ERR异常。
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
var gig=tab.url;
var server_url="";
if(lst_frame.length > 0){
console.log(JSON.stringify(lst_frame, null, 2));
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
function errorHandler(e) {
var msg = '';
switch (e.code) {
case FileError.QUOTA_EXCEEDED_ERR:
msg = 'QUOTA_EXCEEDED_ERR';
break;
case FileError.NOT_FOUND_ERR:
msg = 'NOT_FOUND_ERR';
break;
case FileError.SECURITY_ERR:
msg = 'SECURITY_ERR';
break;
case FileError.INVALID_MODIFICATION_ERR:
msg = 'INVALID_MODIFICATION_ERR';
break;
case FileError.INVALID_STATE_ERR:
msg = 'INVALID_STATE_ERR';
break;
default:
msg = 'Unknown Error';
break;
};
alert(msg);
console.log('Error: ' + msg);
}
function onInitFs(fs) {
alert("1111");
fs.root.getFile('/tmp/log.txt', {create: true, exclusive: true}, function(fileEntry) {
alert("222");
// fileEntry.isFile === true
// fileEntry.name == 'log.txt'
// fileEntry.fullPath == '/log.txt'
}, errorHandler);
}
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);}
答案 0 :(得分:0)
从您的代码中不清楚/tmp/log.txt
是否是Linux机器上的绝对路径,或HTML5存储区域的相对路径,所以我只是提醒您HTML5 specification说:
此规范定义了一个用于导航文件系统层次结构的API,并定义了一种方法,用户代理可以通过该方式将用户本地文件系统的沙盒部分公开给Web应用程序。
所以你不能把你的文件写在磁盘上的任何地方。
关于您的问题,您只需要先创建/temp
目录:
function onInitFs(fs)
{
fs.root.getDirectory('/tmp', {create: true}, function() {}, errorHandler);
fs.root.getFile('/tmp/log.txt', {create: true}, function() {}, errorHandler);
}