として私はあなたがそれがクライアントのマシン上で可能だと、カスタムファイル名を指定して、ローカルマシンのダウンロードフォルダにファイルを保存するために使用できるツールを書きました。
この記事の執筆時点では、特定の機能には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:dataURLおよびBlobサポートを含むチェックアウトthe evolved version on GitHub。
見栄えは良いですが、これは2012年前にはどのブラウザもサポートしていません。私は、クライアント側のダウンロードでできることは最高だと思います。 – styfle
実際に、dataURLフォールバックは、かなり古いFirefoxのコピーと、古いクロムでの回避可能なMIMEタイプの問題で機能します。私はIE10と昨年の[ダウンロード]機能を追加する前に、この関数を何年も使っていました... – dandavis
'BlobBuilder'は廃止されました。代わりに 'Blob'コンストラクタを使うように答えを編集してください。 –