Начните с этого фрагмента кода. Настройте его в соответствии с вашими потребностями.
const files = [{ name: "hello", content: "world" }]
const zipFile: JSZip = new JSZip()
files.forEach(file => zipFile.file<"string">(file.name, file.content))
zipFile.generateAsync<"blob">({ type: "blob" })
.then(blob => {
const a : HTMLAnchorElement = this.renderer.createElement("a")
const url = URL.createObjectURL(blob)
this.renderer.setProperty(a, "href", url)
this.renderer.setProperty(a, "download", "file.zip")
a.click()
URL.revokeObjectURL(url)
})
Объяснение
- Создание объекта zip-файла
- Добавление файлов к объекту
- Создание файла
Blob
zip-файла - Создать тег привязки
- Создать URL-адрес для
Blob
- Добавить URL-адрес в тег привязки
- Программно щелкните тег привязки, чтобы начать процесс загрузки.
- Удалить URL-адрес
Примечание 1: Здесь я использовал службу Renderer2
, потому что Я думаю, что мы не должны напрямую взаимодействовать с DOM.
Примечание 2: Вам нужно будет внедрить службу Renderer2 в свой компонент.