gpt4 book ai didi

javascript - Google Chrome 中的 "File API: Directories and System"问题

转载 作者:行者123 更新时间:2023-11-28 00:27:37 24 4
gpt4 key购买 nike

已阅读this article在 Google Chrome 中使用 HTML5 文件系统 API 后,我决定尝试将其整合到打包的 Web 应用程序中。

使用注释和提供的代码作为指南,我整理了一个相当冗长的脚本,如下所示:

var FSA = FSA || {};
var fsys, root, fileReader, dropReader, dropContainer, btn = [];
window.addEventListener("load", function () {
window.requestFileSystem(PERSISTENT, 5242880 /* ~5MB */, function(fs) {
fsys = fs;
root = fsys.root;
}, FSA.error);
});
function createFile(path) {
root.getFile(path, {create:true, exclusive:true}, function() {
console.log(path+ " file created");
}, FSA.error);
};
function saveFile(name, data, mimetype) {
var e = this || null;
name = name || e.target.name;
data = data || e.target.result;
mimetype = mimetype || e.target.type;
root.getFile(name, {create: true}, function(fileEntry) {
fileEntry.createWriter(function(writer) {
writer.onwrite = function(e) {
console.log(name + ' written successfully to filesystem.');
FSA.getFile(name);
};
writer.onerror = function(e) {
console.log('Write failed: ' + e);
};
var bb = new BlobBuilder();
bb.append(data);
writer.write(bb.getBlob(mimetype));
});
}, FSA.error);
};
function openFile(file, fileTarget) {
root.getFile(file.name, null, function(entry) {
entry.file(function(file) {
reader = new FileReader();
reader.filename = file.name;
reader.onload = function(e) {
fileTarget = e.target.result;
};
reader.readAsText(file);
}, FSA.error);
}, FSA.error);
};

而且,在某种程度上,它似乎有效。我可以使用 createFile 函数创建文件,也可以使用 saveFile 函数保存文件。但是,我似乎无法使用 openFile 函数,所有三个函数都在 JavaScript 控制台中返回以下错误:

Uncaught TypeError: Cannot call method 'getFile' of undefined

我认为问题与变量 root 有关,但我可能错了。

由于这是一个新的 API 和规范草案,因此可用于帮助解决此问题的文档非常少。

是否有人能够指出问题,如果是,请提供解决方案?

感谢您的帮助。

编辑:我正在使用“10.0.639.0 金丝雀构建”,所以我相信我的浏览器应该允许在扩展中使用 API。

最佳答案

目前,文件系统 API getFile 不适用于任何 Chrome 8 的扩展程序。如果您想使用以下命令创建新文件,则需要在外部托管的网页中运行代码获取文件。

它将在 Chrome 9+ 的扩展中得到支持。有关更多信息,请阅读 HTML5 Chromium mailing list post .

我正在运行 Google Chrome 10.0.634.0 开发者 channel 。在检查器中:

window.requestFileSystem(PERSISTENT, 5242880 /* ~5MB */, function(fs) {
root = fs.root;
})
root.getFile

返回:

function getFile() { [native code] }

关于javascript - Google Chrome 中的 "File API: Directories and System"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com