在 iOS Safari 上触发 PDF 文件下载提示
Trigger download prompt on iOS Safari for PDF File
我正在尝试向我的网络应用程序的 iOS 用户显示一个(本机)下载提示,当他们单击 button/link:
不幸的是,我尝试的所有操作都导致 Safari 在新选项卡或当前选项卡中打开文件。我试过像这样使用 FileSaver.js:
saveAs("https://example.com/pdf", "filename.pdf");
我尝试了一个 a
标签:(有和没有 target="_blank"
)
<a href="https://example.com/pdf">Download</a>
我尝试使用 fetch 获取文件并使用 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");
虽然我可以控制服务器响应。这些是我目前设置的headers
Content-Type: application/pdf
Content-Disposition: attachment; filename="Bauhaus%20-%2001-04-2019%2015-59.pdf"
提前致谢!
如果您将服务器响应中的 Content-Type
header 设置为 application/octet-stream
,Safari 将不会将该文件识别为 PDF,因此不会打开它并提供下载提示。
我正在尝试向我的网络应用程序的 iOS 用户显示一个(本机)下载提示,当他们单击 button/link:
不幸的是,我尝试的所有操作都导致 Safari 在新选项卡或当前选项卡中打开文件。我试过像这样使用 FileSaver.js:
saveAs("https://example.com/pdf", "filename.pdf");
我尝试了一个 a
标签:(有和没有 target="_blank"
)
<a href="https://example.com/pdf">Download</a>
我尝试使用 fetch 获取文件并使用 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");
虽然我可以控制服务器响应。这些是我目前设置的headers
Content-Type: application/pdf
Content-Disposition: attachment; filename="Bauhaus%20-%2001-04-2019%2015-59.pdf"
提前致谢!
如果您将服务器响应中的 Content-Type
header 设置为 application/octet-stream
,Safari 将不会将该文件识别为 PDF,因此不会打开它并提供下载提示。