【发布时间】:2015-03-01 07:26:44
【问题描述】:
我有一个目录的retainEntry,所以我可以遍历它并获取FileEntry Objects 的列表,但是我想上传这些文件,所以我可以使用FileEntry Object 附加到formdata 对象中并上传它吗?
Menifest.json
"permissions": [
"alarms","notifications", {"fileSystem": ["write", "retainEntries", "directory"]},
"storage","http://*/*",
"https://*/*"
],
我的 Action.js
var chooseDirButton = document.querySelector('#choose_dir');
var outputdir = document.querySelector('#outputdir');
chooseDirButton.addEventListener('click', function(e) {chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(theEntry) {
chrome.storage.local.set({'chosenFile': chrome.fileSystem.retainEntry(theEntry)});
loadDirEntry(theEntry)
});
});
function loadDirEntry(_chosenEntry) {
chosenEntry = _chosenEntry;
if (chosenEntry.isDirectory) {
var dirReader = chosenEntry.createReader();
var entries = [];
// Call the reader.readEntries() until no more results are returned.
var readEntries = function() {
dirReader.readEntries (function(results) {
if (!results.length) {
console.log(entries.join("\n"));
displayEntryData(chosenEntry);
}
else {
results.forEach(function(item) {
// here irem is FileEntry Object , how can i upload file using this FileEntry Object?
chrome.fileSystem.getDisplayPath(item, function(path) {
entries = entries.concat(path);
});
entries = entries.concat(item.fullPath);
});
readEntries();
}
}, errorHandler);
};
readEntries(); // Start reading dirs.
}
}
【问题讨论】:
-
这有帮助吗? developer.chrome.com/apps/app_storage#read 看起来您首先调用
entry.file(callback)来获取文件。然后你需要使用 FileReader 来读取文件,然后你可以使用 FormData 或任何你喜欢的方式上传它。 -
你好,我试过了,但它给了我同样的问题,因为这家伙有 Using forEach loop while converting from FileEntry object to File object ,它没有进入那部分代码。
标签: google-chrome google-chrome-extension google-chrome-devtools google-chrome-app chromium