#javascript #ios #pdf #download #safari
#javascript #iOS #PDF #Скачать #safari
Вопрос:
Я пытаюсь показать пользователям iOS моего веб-приложения (встроенное) приглашение для загрузки PDF-файла, подобного этому, когда они нажимают кнопку / ссылку:
К сожалению, все, что я пробовал, привело к тому, что Safari открыл файл на новой или текущей вкладке. Я попытался использовать FileSaver.js вот так:
saveAs("https://example.com/pdf", "filename.pdf");
Я попробовал a
тег: (с и без target="_blank"
)
<a href="https://example.com/pdf">Download</a>
Я попытался использовать выборку, чтобы получить файл и использовать FileSaver.js чтобы спасти Blob
:
const res = await fetch("https://example.com/pdf", {
mode: "cors",
method: "GET",
cache: "force-cache",
headers: {
Accept: "application/pdf",
},
});
const blob = await res.blob();
saveAs(blob, "filename.pdf");
Однако я могу контролировать ответ сервера. Это заголовки, которые я сейчас устанавливаю
Content-Type: application/pdf
Content-Disposition: attachment; filename="Bauhaus - 01-04-2019 15-59.pdf"
Заранее спасибо!
Ответ №1:
Если вы установите Content-Type
заголовок в ответе сервера на application/octet-stream
, Safari не распознает файл как PDF и, следовательно, не откроет его и не предложит приглашение на загрузку.
Комментарии:
1. Это уже сделано. Все еще открываю PDF-файлы вместо их загрузки.
2. Я столкнулся с той же проблемой @Antoniosssss — смогли ли вы найти способ открыть приглашение в формате PDF?
3. Нет, еще нет, даже FileSaver не заставил его работать.
4. @ShaneLoveland Я подозреваю, что это может сработать как двухэтапный процесс. Пользователь нажимает ссылку -> загрузить pdf, создает blobURL, создает ссылку / кнопку загрузки для этого большого двоичного объекта. Затем пользователь должен нажать эту другую ссылку / кнопку.