例如,如果你点击链接:
数据:应用程序/八进制;base64 SGVsbG8 =
浏览器将提示您下载一个文件,该文件由超链接本身中base64所包含的数据组成。是否有办法在标记中建议一个默认名称?如果不是,是否有JavaScript解决方案?
例如,如果你点击链接:
数据:应用程序/八进制;base64 SGVsbG8 =
浏览器将提示您下载一个文件,该文件由超链接本身中base64所包含的数据组成。是否有办法在标记中建议一个默认名称?如果不是,是否有JavaScript解决方案?
当前回答
下面是一个基于Holf版本的jQuery版本,可用于Chrome和Firefox,而他的版本似乎只适用于Chrome。在身体上添加一些东西来做到这一点有点奇怪,但如果有人有更好的选择,我完全支持。
var exportFileName = "export-" + filename;
$('<a></a>', {
"download": exportFileName,
"href": "data:," + JSON.stringify(exportData, null,5),
"id": "exportDataID"
}).appendTo("body")[0].click().remove();
其他回答
谷歌代码上有一个小的变通脚本,对我有用:
http://code.google.com/p/download-data-uri/
它添加一个包含数据的表单,提交该表单,然后再次删除该表单。很粗糙,但对我来说很管用。需要jQuery。
这个线程出现在谷歌谷歌代码页之前,我认为它可能有帮助,在这里也有链接。
(这个答案已被新技术淘汰,但出于历史兴趣,将保留在这里。)
这听起来有点粗俗,但我以前也遇到过同样的情况。我正在用javascript动态生成一个文本文件,并希望通过使用data-URI进行编码来提供它供下载。
这在轻微的用户干预下是可能的。生成一个链接<a href="data:…">右键单击我并选择“Save Link As…”并保存为“example.txt”</a>. txt”。正如我所说,这是不优雅的,但如果你不需要专业的解决方案,它是可行的。
这可以通过使用flash将名字复制到剪贴板中来减轻痛苦。当然,如果你允许自己使用Flash或Java(现在浏览器的支持越来越少了),你可能会找到另一种方法来做到这一点。
仅限HTML:使用download属性:
<a download="logo.gif" href="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">下载透明png</a> .gif
仅Javascript:你可以用这段代码保存任何数据URI:
function saveAs(uri, filename) { var link = document.createElement('a'); if (typeof link.download === 'string') { link.href = uri; link.download = filename; //Firefox requires the link to be in the body document.body.appendChild(link); //simulate click link.click(); //remove the link when done document.body.removeChild(link); } else { window.open(uri); } } var file = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' saveAs(file, 'logo.gif');
Chrome、Firefox和Edge 13+将使用指定的文件名。
IE11、Edge 12和Safari 9(它们不支持下载属性)将用默认名称下载文件,或者简单地在新选项卡中显示,如果文件类型是受支持的:图像、视频、音频文件……
看看这个链接: 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
也有一些信息在讨论的其他消息。
使用download属性:
<a download='FileName' href='your_url'>
下载属性适用于Chrome、Firefox、Edge、Opera、桌面版Safari 10+、iOS Safari 13+,但不适用于IE11。