我有一个功能可以下载JSFIDDLE
中给出的文件(PDF / DOCS / CSV / xlsx / JPEG / PNG / GIF)我正在使用这种下载文件的方式,因为像firefox这样的浏览器不允许下载图像文件,而是在不同的标签中打开它们。
现在,如果您尝试点击“点击下载”链接,该文件会被下载,但其真实姓名和扩展名将丢失。
我需要一些帮助才能理解如何实现这一目标。以下是代码:
<a href="#" data-link="https://i.imgur.com/xSjQNTx.jpg">Click to download</a>
var links = document.querySelectorAll("a"), i = 0, lnk;
while(lnk = links[i++]) {
if (lnk.dataset.link.length) lnk.onclick = toBlob;
}
function toBlob(e) {
e.preventDefault();
var lnk = this, xhr = new XMLHttpRequest();
xhr.open("GET", lnk.dataset.link);
xhr.responseType = "blob";
xhr.overrideMimeType("octet/stream");
xhr.onload = function() {
if (xhr.status === 200)
window.location = (URL || webkitURL).createObjectURL(xhr.response);
};
xhr.send();
return false
}
注意:我已经提到其他SO帖子,但他们没有真正帮助