次のようなコードを使用して、ブラウザにリモート サーバーからファイルをダウンロードさせる 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 など、あらゆるファイル タイプをサポートする必要があります。