例如,如果你点击链接:
数据:应用程序/八进制;base64 SGVsbG8 =
浏览器将提示您下载一个文件,该文件由超链接本身中base64所包含的数据组成。是否有办法在标记中建议一个默认名称?如果不是,是否有JavaScript解决方案?
例如,如果你点击链接:
数据:应用程序/八进制;base64 SGVsbG8 =
浏览器将提示您下载一个文件,该文件由超链接本身中base64所包含的数据组成。是否有办法在标记中建议一个默认名称?如果不是,是否有JavaScript解决方案?
当前回答
No.
整个目的是它是一个数据流,而不是一个文件。数据源不应该知道用户代理将其作为文件处理……事实并非如此。
其他回答
谷歌代码上有一个小的变通脚本,对我有用:
http://code.google.com/p/download-data-uri/
它添加一个包含数据的表单,提交该表单,然后再次删除该表单。很粗糙,但对我来说很管用。需要jQuery。
这个线程出现在谷歌谷歌代码页之前,我认为它可能有帮助,在这里也有链接。
看看这个链接: http://lists.w3.org/Archives/Public/uri/2010Feb/0069.html
引用:
它甚至可以在末尾使用;base64(也就是说,不会引起问题) 像这样(至少在Opera中): 数据:文本/平原;charset = utf - 8;头= 3附加% % 20附件% 3 b % 20文件名以% 20 spaces.txt % % 3 d % 22 22% 0 3 d % 0 acontent-language % % 20 en; base64 4 oiadqo % 3 d
也有一些信息在讨论的其他消息。
< a href = . .下载= . .>工作左键和右键->保存链接为..,
但是<img src=..下载= . .右击>不工作->保存图像为..,建议“Download.jped”。
如果你把两者结合起来:<a href=.下载= . .> < img src = . . > < / >
它适用于左键单击,右键单击->保存链接为..,右键单击->保存图像为..
你必须写两次data-uri (href和src),所以对于大的图像文件,最好是用javascript复制uri。
使用Chrome/Edge 88进行测试
下面的Javascript代码片段通过使用链接的新“下载”属性并模拟点击在Chrome中工作。
function downloadWithName(uri, name) {
var link = document.createElement("a");
link.download = name;
link.href = uri;
link.click();
}
下面的例子展示了它的使用:
downloadWithName("data:,Hello%2C%20World!", "helloWorld.txt")
您可以向锚元素添加一个下载属性。
示例:
<a download="abcd.cer"
href="data:application/stream;base64,MIIDhTC......">down</a>