我有一个离线 html 文件,通过将 window.location 设置为来生成并保存 CSV
data:text/csv;base64,Intfa2V5fSIsInt...
但是,在 Safari 中,这只会在浏览器中显示 CSV。
将网址设置为:
data:application/csv;base64,Intfa2V5fSIsInt...
强制 Safari 下载该文件 - 但它得到的通用文件名只是“Unknown-3”。有没有办法指定文件名?
首先,警告:application/csv
不是一个有效的 MIME 类型,因此在这种情况下它对您“有效”的事实纯粹是一个实现怪癖,将来很可能会改变。 (例如,Safaridisplays application/octet-stream
,我希望下载。)
HTML5确实有一个new <a download="file.name">属性。这会强制浏览器将文件下载到磁盘;它使用属性的值作为默认文件名。它确实与数据 URI 或blob URI. (Demo)
不过,目前仅 Chrome (14+) 支持。 Safari 5.1 忽略该属性。
一种可能的替代方法是使用文件系统API,但这为您提供了一个可以使用的沙盒文件夹。例如,您不能将文件直接保存到用户的文档文件夹中。相反,您可以将文件写入沙箱,然后重定向到新沙箱上的文件filesystem
schema:
location.assign('filesystem:http://example.com/temporary/somefile.csv');
这应该调用 UA 的下载机制(使用正确的文件名!),但我还没有对此进行测试,因此 Safari 可能只会显示该文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)