在我的项目中,我需要解压缩文件并将其内容上传到nodeJS服务器。我能够解压缩文件,例如我得到了内容的文件名等。 解压后我想将内容上传到我的服务器。这就是问题所在。我正在使用formData来传输文件。但每次我尝试上传文件时,它都会在firefox中显示控制台上的错误:
“TypeError:FormData.append的参数2没有实现接口Blob。”
所以似乎没有给formData提供文件对象...... 对于解压缩,我使用JSZip [链接到JSZip] [1]
修改
我自己想出了第一个问题。现在我无法按正确的顺序执行代码。我的JS代码:
$("#file").on("change", function (evt) {
var formData = new FormData();
var counter = 0;
// remove content
$result.html("");
// be sure to show the results
$("#result_block").removeClass("hidden").addClass("show");
// Closure to capture the file information.
console.log('1');
function handleFile(f) {
var $fileContent = $("<ul>");
$result.append($fileContent);
JSZip.loadAsync(f)
.then(function (zip) {
zip.forEach(function (relativePath, zipEntry) {
console.log('2');
console.log(zipEntry);
zip.file(zipEntry.name).async("blob").then(function (u8) {
console.log('3');
console.log(u8);
formData.append('photo', u8, counter);
counter++;
$fileContent.append($("<li>", {
text: zipEntry.name
}));
})
});
}, function (e) {
$result.append($("<div>", {
"class": "alert alert-danger",
text: "Error reading " + f.name + ": " + e.message
}));
});
}
var files = evt.target.files;
handleFile(files[0]);
});
控制台输出是:
1
2
object
2
object
3
blob
3
blob
但我想要的是:
1
2
object
3
blob
2
object
3
blob
但是我不知道如何把另一个。然后按照我想要的方式进行这项工作