gpt4 book ai didi

javascript - 通过使用 Safari 更改 window.location 下载文件

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:58 24 4
gpt4 key购买 nike

我有一个离线 html 文件,它通过将 window.location 设置为

来生成和保存 CSV
data:text/csv;base64,Intfa2V5fSIsInt...

但是,在 Safari 中,这只会在浏览器中显示 CSV。

将 url 设置为:

data:application/csv;base64,Intfa2V5fSIsInt...

强制 Safari 下载文件 - 但它获得的通用文件名仅为“Unknown-3”。有没有办法指定文件名?

最佳答案

首先,一个警告:application/csv不是 valid MIME type ,因此在这种情况下它对您“有效”的事实纯粹是一个实现怪癖,将来很可能会改变。 (例如,Safari 显示 application/octet-stream ,我希望下载它。)

HTML5 确实有一个 new <a download="file.name"> attribute .这会强制浏览器将文件下载到磁盘;它使用属性的值作为默认文件名。它确实与数据 URI 或 blob 结合使用网址。 ( Demo )

但是,目前只有 Chrome (14+) 支持。 Safari 5.1 忽略该属性。


一种可能的替代方法是使用 Filesystem API ,但这会为您提供一个沙盒文件夹供您使用。例如,您不能将文件直接保存到用户的文档文件夹中。相反,您可以将文件写入沙箱,然后重定向到新的 filesystem 上的文件。模式:

location.assign('filesystem:http://example.com/temporary/somefile.csv');

这应该会调用 UA 的下载机制(使用正确的文件名!),但我还没有对此进行测试,因此 Safari 可能无论如何都会显示该文件。

关于javascript - 通过使用 Safari 更改 window.location 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9723262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com