8

次のようなコードを使用して、ブラウザにリモート サーバーからファイルをダウンロードさせる JavaScript を作成できました。

var iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = "filename.zip"
document.body.appendChild(iframe);

これはうまくいきます。ただし、ファイルのコンテンツがブラウザー側の JavaScript の文字列に格納されているという別の状況があり、そのファイルのダウンロードをトリガーする必要があります。上記の 3 行目を次のように置き換えてみました。「myFileContents」は、ファイルの実際のバイトを含む文字列です。

iframe.src = "data:application/octet-stream;base64," + Base64.encode(myFileContents);

これにより、ファイルがダウンロードされますが、ファイル名は失われます。Chrome では、ファイル名は単に「download」です。また、ブラウザのバージョンによっては、許可されるファイル サイズに制限があることも読みました。

これを達成する方法はありますか?JQuery を使用しても問題ありません。ソリューションは、zip、pdf、csv、png、jpg、xls など、あらゆるファイル タイプをサポートする必要があります。

4

1 に答える 1