gpt4 book ai didi

javascript - 使用 Chrome 应用 API 获取文件

转载 作者:行者123 更新时间:2023-12-02 18:04:53 25 4
gpt4 key购买 nike

我有以下代码:

    decodeFile = function(theFile, arrayBuffer) {
var song = new FileDecoder().decodeFile(theFile.type, arrayBuffer);
if (song !== null) {
fileList.push(song);
}
},
fileCreated = function(file) {
var reader = new FileReader();
reader.onload = function(e) {
decodeFile(file, e.target.result);
};
reader.readAsArrayBuffer(file);
},
readDirItems = function(items) {
var i, item,
length = items.length;
for(i = 0; i < length; i++) {
item = items[i];
if (item.isFile) {
item.file(fileCreated, errorCallback);
}
}
};
//init
uploadInput.addEventListener("click", function() {
chrome.fileSystem.chooseEntry({type: "openDirectory"}, function(chosenDir) {
var dirReader,
getFilesInDirectory = function() {
dirReader.readEntries(readDirItems, errorCallback);
};
if (chosenDir && chosenDir.isDirectory) {
dirReader = chosenDir.createReader();
getFilesInDirectory();
}
});
});

我期望它的工作方式是在 readDirItems 中,我将循环遍历所有项目,并为每个 fileEntry 调用 file 方法并输入 fileCreated 回调。然而,这只发生在第一个文件上。如果我在 fileCreated 中设置断点,则只会输入一次。谁能解释一下我做错了什么?

最佳答案

对我有用。您的代码比这个问题所需的代码要复杂得多,所以这里有一个更简单的版本。该错误可能是在清理代码的过程中修复的。

list .json

{
"name": "20184022",
"description": "Answer to Stack Overflow question 20184022.",
"manifest_version": 2,
"minimum_chrome_version": "31",
"version": "0.0.0.1",

"app": {
"background": {
"scripts": ["main.js"]
}
},
"permissions": [
{"fileSystem": ["directory"]}
]
}

main.js

chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('main.html', {});
});

main.html

<!DOCTYPE html>
<html>
<head><script src="iterate.js"></script></head>
<body><button id="iterate">Iterate</button></body>
</html>

迭代.js

window.onload = function() {
var errorCallback = function(e) {
console.log(e);
}
document.querySelector("#iterate").addEventListener("click", function() {
chrome.fileSystem.chooseEntry({type: "openDirectory"}, function(dir) {
if (dir && dir.isDirectory) {
var reader = dir.createReader();
reader.readEntries(function(entries) {
for (var i = 0; i < entries.length; ++i) {
console.log("entry is " + entries[i].fullPath);
}
}, errorCallback);
}
});
});
};

...以及示例运行:

entry is /20184022/manifest.json iterate.js:13
entry is /20184022/iterate.js iterate.js:13
entry is /20184022/main.js iterate.js:13
entry is /20184022/main.html iterate.js:13

我建议您逐渐更改代码以匹配此示例,然后一旦您的代码从损坏变为已修复,请确定问题所在并更新您的问题以指出错误。

关于javascript - 使用 Chrome 应用 API 获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184022/

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