我寫了一個工具,你可以用它來保存文件到本地機器上的下載文件夾,使用自定義的文件名,如果客戶端的機器上是可能的。在這篇文章中,你需要chrome,firefox或者IE10,但是這個工具可以退回到一個非命名的下載,如果這是所有可用的,因爲什麼都比沒有好......
供您使用:
和魔碼:
function download(strData, strFileName, strMimeType) {
var D = document,
a = D.createElement("a");
strMimeType= strMimeType || "application/octet-stream";
if (navigator.msSaveBlob) { // IE10
return navigator.msSaveBlob(new Blob([strData], {type: strMimeType}), strFileName);
} /* end if(navigator.msSaveBlob) */
if ('download' in a) { //html5 A[download]
a.href = "data:" + strMimeType + "," + encodeURIComponent(strData);
a.setAttribute("download", strFileName);
a.innerHTML = "downloading...";
D.body.appendChild(a);
setTimeout(function() {
a.click();
D.body.removeChild(a);
}, 66);
return true;
} /* end if('download' in a) */
//do iframe dataURL download (old ch+FF):
var f = D.createElement("iframe");
D.body.appendChild(f);
f.src = "data:" + strMimeType + "," + encodeURIComponent(strData);
setTimeout(function() {
D.body.removeChild(f);
}, 333);
return true;
} /* end download() */
更新:增加了防未來的IE程序
update2:結帳the evolved version on GitHub包含dataURL和Blob支持。
看起來不錯,但這不支持2012年之前的任何瀏覽器。我想這是我們可以用客戶端下載做的最好的。 – styfle 2013-06-18 19:26:47
實際上,dataURL回退在firefox的相當老的副本上工作,並且在舊版本的chromes上有一些可以解決的mime類型問題。去年我在添加IE10和[下載]功能之前使用了多年的功能...... – dandavis 2013-06-18 20:22:47
'BlobBuilder'已被棄用。請修改您的答案,以改爲使用Blob構造函數。 – 2013-12-30 17:53:05