我正在尝试使用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
读取i,首先必须将其转换为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);
}
});
});
});
});
答案 0 :(得分:0)
更改
var callback = function(){
要:
var callback = function(a){
答案 1 :(得分:0)
我读了......&#34;有一个功能
**void** file(
FileCallback successCallback, optional ErrorCallback errorCallback
);
返回文件对象。&#34;
如你所见,它不会返回它,但作为参数传递给回调。他们的言语不好