我正在尝试使用 Chrome 中的 FileSystem API 写入本地文件系统。执行时出现以下错误
FileError is deprecated. Please use the 'name' or 'message' attributes of DOMError rather than 'code'.
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
var fs = null;
function errorHandler(e) {
alert("hi");
var msg = '';
switch (e.code) { //Error is being reported here
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;
}
}
function onInitFs(fs) {
alert("hi");
fs.root.getFile('log.txt', {create: true}, function(fileEntry) {
// Create a FileWriter object for our FileEntry (log.txt).
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('Write completed.');
};
fileWriter.onerror = function(e) {
console.log('Write failed: ' + e.toString());
};
// Create a new Blob and write it to log.txt.
var blob = new Blob(['Add some text'], {type: 'text/plain'});
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}
function initFS(){
window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
}
if (window.requestFileSystem) {
initFS();
}
因为我知道执行转到 errorHandler
方法,所以我假设我在调用 requestFileSystem()
方法时做错了什么。我真的很感激这里的帮助。提前致谢
进一步的研究表明它因安全错误而失败。我如何基本上绕过它
最佳答案
如果您在本地访问脚本(通过 file:///),您需要使用“--allow-file-access-from-files”标志启动 Chrome,如下所示:
C:\Path\To\Chrome.exe --allow-file-access-from-files
如果您在 Chrome 应用中执行此操作,则需要将文件系统权限添加到您的 manifest.json 中:
{
"manifest_version": 2,
"name": "...",
"version": "...",
"minimum_chrome_version": "23",
"permissions": [
{
"fileSystem": ["write"]
}
]
}
要删除您收到的警告,只需使用 e.name
和/或 e.message
而不是 e.code
:
function errorHandler(e) {
alert(e.name + ": " + e.message);
}
关于javascript - 使用 FileSystem Api 以 Javascript 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24930403/