【发布时间】:2024-12-24 07:55:01
【问题描述】:
我正在使用 chrome 应用程序并尝试从用户选择的目录中包含的文件中读取。到目前为止效果很好,用户选择一个文件,然后将单个文件条目对象打印到我的控制台中:
代码:
for (var i = 0; i < entries.length; ++i) {
console.log("entry is " + entries[i]);
a = entries[i].file(callback);
}
控制台:
entry is [object FileEntry] window.js:18
entry is [object FileEntry]
......
那么你如何从控制台看到entries[i] 是一个FileEntry 对象。
要从 FileEntry 读取,我首先必须将其转换为 File 对象。
在 FileEntry 的文档中:https://developer.mozilla.org/en-US/docs/Web/API/FileEntry#File 我读到有一个函数 void file(
FileCallback successCallback, optional ErrorCallback errorCallback
); 返回一个文件对象。
您如何在上面的 代码 表单中看到我尝试用它来实现这一点:
a = entries[i].file(callback);
......
var callback = function(){
console.log("it works");
console.log(a);
}
我的问题是 console.log(a) 不返回 object File 而是未定义:
控制台:
entry is [object FileEntry] window.js:18
entry is [object FileEntry] window.js:18
it works window.js:29
undefined window.js:30
it works window.js:29
undefined
我做错了什么?我如何测试它是否真的返回一个文件对象?谢谢!
完整代码
var callback = function(){
console.log("it works");
console.log(a);
}
chooseDirButton.addEventListener('click', function(e) {
chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(theEntry) {
chrome.fileSystem.getDisplayPath(theEntry, function(path) {
var reader = theEntry.createReader();
reader.readEntries(function(entries) {
for (var i = 0; i < entries.length; ++i) {
console.log("entry is " + entries[i]);
a = entries[i].file(callback);
}
});
});
});
});
【问题讨论】:
标签: javascript google-chrome google-apps