例如,如果你点击链接:

数据:应用程序/八进制;base64 SGVsbG8 =

浏览器将提示您下载一个文件,该文件由超链接本身中base64所包含的数据组成。是否有办法在标记中建议一个默认名称?如果不是,是否有JavaScript解决方案?


当前回答

使用download属性:

<a download='FileName' href='your_url'>

下载属性适用于Chrome、Firefox、Edge、Opera、桌面版Safari 10+、iOS Safari 13+,但不适用于IE11。

其他回答

根据RFC 2397,没有。

<a>元素似乎也没有任何可以使用的属性。

然而,HTML5随后在<a>元素上引入了下载属性,尽管在编写时支持并不普遍(例如,没有MSIE支持)。

仅限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://code.google.com/p/download-data-uri/

它添加一个包含数据的表单,提交该表单,然后再次删除该表单。很粗糙,但对我来说很管用。需要jQuery。

这个线程出现在谷歌谷歌代码页之前,我认为它可能有帮助,在这里也有链接。

No.

整个目的是它是一个数据流,而不是一个文件。数据源不应该知道用户代理将其作为文件处理……事实并非如此。

使用download属性:

<a download='FileName' href='your_url'>

下载属性适用于Chrome、Firefox、Edge、Opera、桌面版Safari 10+、iOS Safari 13+,但不适用于IE11。