使用 Safari 下载数据 URL
Posted
技术标签:
【中文标题】使用 Safari 下载数据 URL【英文标题】:Download a Data URL using Safari 【发布时间】:2021-12-07 00:06:54 【问题描述】:我们正在开发一个应用程序,我们需要在其中下载客户端生成的 PDF 文件。 我们使用字符串将文件内容输入数据 URL,如下所示:
const pdfContent = 'xxxxx';
const element = document.createElement('a');
element.setAttribute('href', `data:application/pdf;charset=utf-8,$encodeURIComponent(pdfContent)`);
element.setAttribute('download', 'mypdf.pdf');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
这在使用 Microsoft Edge 时效果很好,但在 Safari 中出现错误提示“不允许将顶部框架导航到数据 URL”。
主机应用程序不允许使用 window.open() 或任何此类技巧,我尝试使用 iframe 但它不起作用,我可能做错了。 我还尝试了其他库,如文件保护程序、保存文件,所有这些库都在 npm 上可用,结果相同,无法将顶部框架导航到数据 url。
有什么提示吗?谢谢。
【问题讨论】:
【参考方案1】:我最终使用了一个 blob 流,它部分工作,因为我仍然无法下载,因为它在沙盒环境(Office 插件)上运行。我想我们将不得不求助于打开浏览器窗口并在那里下载文件,除非有人有更好的 Office 加载项替代方案。
【讨论】:
以上是关于使用 Safari 下载数据 URL的主要内容,如果未能解决你的问题,请参考以下文章
Safari(或 Apple OS)将 .txt 添加到 .csv 下载
Safari 添加 .html 以使用 epplus jquery.fileDownload.js 下载 xlsx
macbook 无论用safari还是chrome下载 点击下载后下载的目标地址出现在地址栏而网页时空白的,不会自动下载