Вот документация для Pizzip для незнакомых людей: https://github.com/open-xml-templating/pizzip/tree/master/documentation
Также я использую VueJS (2), ES6, TS
I я пытаюсь загрузить отдельные файлы с помощью Ax ios и затем поместить их в zip-файл с помощью Pizzip.
async getFile(mat: Material): Promise<any> {
try {
const file = await axios.get(mat.url, { responseType: 'arraybuffer' })
return file.data
} catch (error) {
console.log(error)
return {}
}
}
Это дает мне ArrayBuffer
правильно. Тогда у меня есть следующее:
async getZip() {
let zip = new pizzip()
this.materials.forEach(async mat => {
const record = await PortalService.getFile(mat)
console.log(record) // logs the ArrayBuffer
zip.file(mat.name, record)
})
let files = zip.generate({ type: 'blob' })
return saveAs(files, `${this.request.id}-files.zip`)
}
Документы Pizzip сказали, что аргумент data
для zip.file()
может иметь тип ArrayBuffer
, но когда я загружаю zip, это просто пустой архив. Я попытался использовать необязательный параметр options
для zip.file()
, но ничего не помогло. Заранее спасибо.