我在将解压缩文件的数据从zip转换为新的File()方法时出现问题,因此我可以将其重新上传到其他服务器。主要的想法是用户可以上传zip文件但是系统只会上传zip文件而不是zip本身......所以我需要首先提取zip中的文件并将其上传到服务器。我知道可以通过首先上传zip并将其解压缩到服务器来完成,但是zip文件中的文件需要首先使用适当的名称重命名,然后再上传并保存在数据库中。
我已经可以提取文件,但我的问题是如何将下面的编码数据转换为新的File()方法。
我试过了:
new File([data], 'cc_causation_report.docx', {type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', lastModified: Date.now()});
但它不起作用。
以下是完整的代码。
var filesInput = file;
var res;
var reader = new FileReader();
reader.readAsBinaryString(filesInput);
reader.onloadend = function(e){
var myZip = e.target.result;
var unzipper = new JSUnzip(myZip);
unzipper.readEntries();
var myFiles = unzipper.entries;
let z_num_files_uploaded = 0;
let z_temp_files = [];
let z_num_uploader_files = myFiles.length;
for(var i=0; i<myFiles.length; i++) {
var data = myFiles[i].data;
var name = myFiles[i].fileName; // This is the file name
var _fxt = name.split('.').pop().toLowerCase();
var bytes = new Uint8Array(data.length);
for(var _i = 0 ; _i < data.length; _i++){
bytes[_i] = data.charCodeAt(_i);
}
zfile = new File([bytes], name, {type: _MIME_TYPES[_fxt], lastModified: Date.now()});
console.log(zfile);
var uploader = new Slingshot.Upload("myFileUploads");
uploader.send(zfile, function (error, downloadUrl) {
if (error) {
alert (error);
}
else {
}
});
}
}
感谢任何帮助。 : - )
谢谢!