#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
атрибута. перечислите три решения:
- Упакуйте файл в тип файла, который не может быть открыт непосредственно браузером, например ZIP
- При пересылке серверной частью серверная часть запрашивает сторонний ресурс и возвращает его интерфейсной части, которая сохраняет файл с помощью таких инструментов, как file-Saver
- Если на стороннем ресурсе, на который указывает 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