用js在浏览器中创建一个下载文件
但仅限于浏览器,在许多情况下,我们只能提供一个链接,让用户单击Open,例如,以下链接:复制代码代码如下所示:
中
当用户单击此链接时,浏览器将打开并显示链接指向的链接的内容。显然,它不执行我们的needs.html5添加下载属性的标签。如果你有这个属性,点击这个链接,浏览器不会打开链接指向的文件,而是下载它(目前只有Chrome、Firefox和Opera支持)。
当你下载,你可以使用链接的名称直接作为文件名,但它是可以改变的,只要添加你想要添加到下载文件的名称,如下载= not-a-file.js。
但这还不够。上述方法只适用于服务器上的文件。如果您想让浏览器下载在浏览器端js生成的内容,您想做什么
事实上,有一种方法去做,我相信很多人都听过datauri,更常见的是src的图片,如:
复制代码代码如下所示:
datauri可以解释的地点在这里,我就不解释了。
现在,有一种方法可以下载JS生成的内容:
复制代码代码如下所示:
功能下载文件(链接、文件名、内容){
alink.download =文件名;
alink.href =数据:文本/平原+内容;
}
在调用下载文件,用户点击链接触发浏览器下载。
然而,这是不够的,有两种方法是有缺陷的,造成许多懒惰女孩的损失:
下载的文件类型已死亡。Meimei想做什么来下载经过处理的水果照片
下载并再次单击。太麻烦了。
解决问题的文件类型,可以使用新的API浏览器(URL。createobjecturl)来解决问题,URL.createObjectURL通常是用来创建用于显示图片datauri图片,这里下载文件让浏览器帮助我们设置文件类型。
The parameters of URL.createObjectURL are File object or Blob object. 文件对象是输入的文件。对象是二进制大对象,详细的描述可以在这里参考。
现在,我们可以创建一个objecturl内容并将它分配给链接的文件类型的问题解决。
文件的自动下载也很好,要建立UI点击事件,然后自动触发,可以自动下载。
现在看最后的代码:
复制代码代码如下所示:
功能下载文件(文件名、内容){
var = document.createelement链接(A);
var =新滴({ });
VaR EVT = document.createevent(htmlevents );
evt.initevent(点击,
alink.download =文件名;
alink.href = url.createobjecturl(BLOB);
ALink.dispatchEvent(EVT);
}
现在,只要一个电话到下载文件,会自动下载文件,是不是很有意思。^ _ ^。
注:目前(2014)斑点和URL.createObjectURL不需要在标准的浏览器添加私有前缀,所以他们可以高高兴兴地。如果你不放心,你可以检查一下,我可以用吗。