Javascript 在HTML5中通过文件系统API创建文件时出现错误代码18或22

Javascript 在HTML5中通过文件系统API创建文件时出现错误代码18或22,javascript,html,html5-filesystem,Javascript,Html,Html5 Filesystem,我编写了以下代码,通过HTML5中出现的文件系统API创建一个新文件: var mywindow = window.webkitRequestFileSystem; mywindow(window.TEMPORARY, 5 * 1024 * 1024, getFile, handleError); function getFile(fileSystem) { fileSystem.root.getFile("example.txt", { create: true }, fileOp

我编写了以下代码,通过HTML5中出现的文件系统API创建一个新文件:

var mywindow = window.webkitRequestFileSystem;

mywindow(window.TEMPORARY, 5 * 1024 * 1024, getFile, handleError);

function getFile(fileSystem) {
    fileSystem.root.getFile("example.txt", { create: true }, fileOpened, handleError);
}

function fileOpened(fileEntry) {
    console.log("File opened!");
    fileEntry.createWriter(writeToFile, handleError);

}

function writeToFile(fileWriter) {
    fileWriter.onwriteend = function() { alert('Success'); };
    fileWriter.onerror = function() { alert('Failed'); };
    fileWriter.write(new Blob(['Hello world'], {type: 'text/plain'}));
    }


function handleError(error) {
console.log('an error has occured ' + error.code);
}
尝试创建
example.txt
文件会导致调用
handleError
方法,错误代码为18。我在代码中遗漏了什么吗

谷歌浏览器版本:58.0.3029.110(64位)

更新1:启动带有
的Google chrome--允许从文件访问文件
参数会导致相同的错误代码18


更新2:当我直接从磁盘浏览html文件时,会产生错误代码18,但当我在IIS中的网站中托管相同的html文件时,错误代码会更改为22

您的浏览器正在强制执行安全策略,您可以尝试打开带有标志的Google Chrome--允许从文件访问文件,例如
\Chrome.exe--允许从文件访问文件
这似乎没有帮助。在使用此附加参数启动chrome后,我仍然会遇到相同的错误。您正在读取本地文件吗?(url是
file://....
)否。正如您在代码段中看到的,我正试图使用
fileSystem.root.getFile
API打开一个名为
example.txt
的文件。如果文件不存在,此API将创建该文件。我第一次尝试在我的计算机上使用HTML5的文件系统API特性,所以它应该在我的情况下创建一个新文件。我相信,创建
example.txt
的实际目录路径是由浏览器控制的。我不认为我可以在我的硬盘上提供一个随机的文件路径,例如
D:\example.txt
,由HTML5的文件系统API打开,因为这些API在沙盒环境下起作用。“非标准此功能是非标准的,不在标准轨道上。不要在面向Web的生产站点上使用它:它不会适用于所有用户。在实现之间也可能有很大的不兼容性,并且行为可能会在未来改变。