Ошибка .zip, содержащий несколько файлов .pdf, с использованием JSZip - PullRequest
1 голос
/ 09 мая 2020

Я не знаю, как использовать библиотеку JSZip, и если с ее помощью вы можете задать вопрос, который я задаю.

Идея была примерно такой:

generateZip() {
const a = ['arraybase64example'];

const zip = new JSZip();

Array.from(a)
  .forEach(file => {
    zip.file("prueba", file)
  })

  return zip.generateAsync({
    type: 'arraybuffer', // changed from blob to arrayBuffer
    compression: 'DEFLATE',
    compressionOptions: {
      level: 9
    }
  }).then(function (content) {
    window.location.href = content; // Type 'ArrayBuffer' cannot be assigned to type 'string'
  });
}

Я не могу загрузить файл .zip из браузера в отношении глобального объекта окна.

1 Ответ

0 голосов
/ 09 мая 2020

Начните с этого фрагмента кода. Настройте его в соответствии с вашими потребностями.

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)
    })

Объяснение

  1. Создание объекта zip-файла
  2. Добавление файлов к объекту
  3. Создание файла Blob zip-файла
  4. Создать тег привязки
  5. Создать URL-адрес для Blob
  6. Добавить URL-адрес в тег привязки
  7. Программно щелкните тег привязки, чтобы начать процесс загрузки.
  8. Удалить URL-адрес

Примечание 1: Здесь я использовал службу Renderer2, потому что Я думаю, что мы не должны напрямую взаимодействовать с DOM.

Примечание 2: Вам нужно будет внедрить службу Renderer2 в свой компонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...