Я пытаюсь загрузить папку, рекурсивно добавляя файлы и подпапки в zip, а затем загружая zip, используя AJAX. Ниже приведен код, который я написал:
if(item.isDirectory){
var zip = new JSZip();
create_zip_dir(zip, item, "");
zip.generateAsync({
type: "blob"
}).then(function (file) {
console.log(file);
file = new File([file], item.name + ".zip", {
type: "application/zip"
})
console.log(file);
//console.log(file);
do_upload(file, wd_id);
});
function create_zip_dir(zip, item, path){
if(item.isFile){
var name = path + item.name;
item.file(function(file) {
if(file.name.substring(file.name.lastIndexOf('.')+1) === "docx"){
file = new File([file], file.name, {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
})
}
zip.file(name, file);
});
} else if(item.isDirectory){
var dirReader = item.createReader();
dirReader.readEntries(function(entries) {
for (var i=0; i<entries.length; i++) {
create_zip_dir(zip, entries[i], path + item.name + "/");
}
});
}
}
Однако, независимо от того, какое содержимое папки я пытаюсь сжать, создаваемый большой двоичный объект всегда имеет размер 22 байта. Наш файл console.log, который я вижу:
Blob {size: 22, type: "application/zip"}
size: 22
type: "application/zip"
__proto__: Blob
Когда я проверяю .zip после загрузки, архив неизменно пуст. Любая помощь приветствуется.