Я хотел добавить функциональность, чтобы пользователь мог пойти по маршруту и загрузить zip . Чтобы сделать zip , я использую архиватор , если я перейду документы архиватор , то первым шагом должно быть, что я делаю поток записи и затем передать его методу zip(output)
(вывод - поток записи) , а затем, чтобы загрузить этот файл, я могу использовать res.download(filepath)
, но я нашел решение, где res.attachment(download.zip)
используется, а затем res передается в zip(res)
, и когда посещается маршрут, заархивированный файл загружается.
Чего я здесь не понял, так это природы res.attachment()
. Это работает как поток записи ? Если это произойдет, то в файл будут записаны данные , которые содержит res ?
P.S .: Я прочитал экспресс-документы, но мало информации о attachment()
методе
Код
download() {
const files = this.result.files
const zip = archiver('zip', {
zlib: {level: 9}
})
const response = this.response
response.attachment('download.zip')
zip.pipe(response)
files.forEach((file) => {
const filePath = path.join(uploadDir, file.filename)
zip.file(filePath, {name: file.originalname})
})
zip.finalize()
}