Изменить имя загрузки файла для ie11 - PullRequest
1 голос
/ 12 июля 2020

Мой текущий проект требует загрузки файла. Файл создается автоматически и имеет недружелюбное имя при сохранении, поэтому мы меняем имя файла на более удобное для чтения при загрузке.

Например, если пользователь загружает файл с именем 324343242342.pdf, мы меняем его to Lesson1.pdf или что-то еще для того, что сохранено на их компьютере.

У меня проблемы с ie11. Я знаю, что атрибут загрузки не работает в ie11, поэтому для этого мы используем капли, и все работает нормально для целей загрузки в браузерах, но я не уверен, как изменить имя файла в ie11.

Во всех других браузерах я просто использую <a href="#" :download="new_file_name"> для вызова небольшого метода вычисления имени файла в компоненте vue, но это не работает для ie11, потому что там не работает атрибут «загрузка».

Кто-нибудь знает, как go редактировать это имя и в ie11? Нахожу ответы только на исправление функциональности загрузки в целом, ничего о настройке имени файла.

Спасибо!

1 Ответ

1 голос
/ 13 июля 2020

Вы должны сделать что-то подобное https://github.com/kennethjiang/js-file-download/blob/master/file-download.js

function downloadFile (data, filename, mime) {
    const blob = new Blob([data], { type: mime || 'application/octet-stream' })
    if (typeof window.navigator.msSaveBlob !== 'undefined') {
      // For IE
      window.navigator.msSaveBlob(blob, filename)
    } else {
      // For other browsers
      const blobURL = window.URL.createObjectURL(blob)
      const tempLink = document.createElement('a')
      tempLink.style.display = 'none'
      tempLink.href = blobURL
      tempLink.setAttribute('download', filename)

      if (typeof tempLink.download === 'undefined') {
        tempLink.setAttribute('target', '_blank')
      }

      document.body.appendChild(tempLink)
      tempLink.click()
      document.body.removeChild(tempLink)
      window.URL.revokeObjectURL(blobURL)
    }
  }
...