Загрузка ссылки PDF в виде файла на той же странице вместо открытия в браузере

#javascript #typescript #download #angular8 #ionic5

#javascript #typescript #Скачать #angular8 #ionic5

Вопрос:

В моем приложении, написанном на Ionic 5 и Angular 8, мне нужно загрузить несколько ссылок PDF (файл) на одной странице при нажатии на ссылку. Я пытался, но ссылки PDF открываются в браузере. Просьба помочь мне достичь этой функциональности.

https://stackblitz.com/edit/ionic-yzzwov?file=pages/home/home.html

Ответ №1:

Атрибут загрузки отображается нормально при том же происхождении, в противном случае он будет отображаться так же, как и без download атрибута. перечислите три решения:

  1. Упакуйте файл в тип файла, который не может быть открыт непосредственно браузером, например ZIP
  2. При пересылке серверной частью серверная часть запрашивает сторонний ресурс и возвращает его интерфейсной части, которая сохраняет файл с помощью таких инструментов, как file-Saver
  3. Если на стороннем ресурсе, на который указывает URL, настроен CORS, вы можете запросить файл через XHR
 downloadFileXHR(filePath, fileName) {
   var xhh = new XMLHttpRequest()
   xhh.open('get', filePath)
   xhh.responseType = 'blob'
   xhh.onreadystatechange = function () {
     if (xhh.readyState === 4 amp;amp; xhh.status === 200) {
       var blob = new Blob([xhh.response])
       var csvUrl = URL.createObjectURL(blob)
       var link = document.createElement('a')
       link.href = csvUrl
       link.download = fileName
       link.click()
     }
   }
   xhh.send()
  

Комментарии:

1. Я попробовал вышеупомянутый подход, и загрузка файла не происходит.

2. Предварительным условием является то, что сторонний ресурс, на который указывает URL, настроен CORS