JSZip - как назвать файл с помощью generateAsync, не загружая его
Доброе утро, я использую JSZip для создания почтового индекса, у меня есть этот код:
for (var i = 0, f; f = content[i]; i++) {
var zip = new JSZip();
zip.file(f.name, f);
zip.generateAsync({type:"blob", compression:"DEFLATE", compressionOptions: { level: 9 }})
.then(function(content) {
var item = {
'type' : content.type,
'size' : content.size,
//'name' : ¿content.name?
}
});
}
Я не хочу загружать файл, я хочу загрузить его на свой сервер, но у него нет имени атрибута, у него есть два атрибута: тип и размер. Но мне нужно указать имя файла.
Это не сработает, если я напишу 'name': f.name, потому что функция асинхронная.
Кто-нибудь знает, как передать имя атрибута в контент.
Изменить: или, если вы можете сказать мне, как сделать его не асинхронным, это тоже будет работать.
Спасибо за помощь.
1 ответ
Решение
Решено с помощью этого:
Используйте функцию, которая вызывает асинхронный метод, и получите ZIP и имя файла.
function makeZip(zip, name) {
name = name.split('.')[0] + ".zip";
zip.generateAsync({type:"blob", compression:"DEFLATE", compressionOptions: { level: 9 }})
.then(function(content) {
// see FileSaver.js
console.log(content)
saveAs(content, name)
var item = {
'name': name,
'type': content.type,
'size': content.size,
'guid': generatorguid()
};
});
}
А затем позвоните из-за:
for (var i = 0, f; f = content[i]; i++) {
var fZip = new JSZip();
fZip.file(f.name, f);
makeZip(fZip, f.name);
}