【发布时间】:2017-11-19 04:33:20
【问题描述】:
我希望我的用户在浏览器中选择一个包含图像文件的 zip 文件。然后,我检查 zip 文件并选择要发送到远程服务器的图像文件(在那里处理它们等)。这适用于加载 zip 文件并识别其中的文件。我通过
选择文件 <input type="file">
元素;我使用优秀的 JSZip 库将其作为 zip 文件读入:
var zip = new JSZip();
zip.loadAsync("file selected in browser")
然后我识别此文件中的 zip 文件:
for (var key in zip.files) {
var myFile=zip.files[key]; }
现在,使用 JSZip,我可以提取每个压缩文件:
zip.files["key for this file"].async("base64").then(function (myImage) {
//send this image to a remote server as if it were a file
});
问题出在最后一步。我无法找出正确的调用、参数等组合来正确上传。似乎很明显的事情是创建一个 formData 对象并从那里发送它,所以:
var fd = new FormData();
fd.append("file", myImage);
然后把它贴上ajax:
$.ajax({
type: 'POST',
url: url,
enctype: 'multipart/form-data',
contentType: false,
dataType: false,
processData: false,
data: fd,
}).done(function(data){
//do something with returned data
})
但是,这在服务器端不起作用(尽管从表单发送到相同地址的相同文件可以正常工作)。我错过了什么?或者我不能用 $.ajax(或 npm http 模块)来做这件事,而必须使用更底层的东西,比如 npm 请求模块?
救命!
【问题讨论】:
标签: node.js upload extract zipfile