ユーザーにダウンロードしてもらいたいデータURIがメモリにあります。
このフィドルはクロームで動作しますが、FFでは動作しません:http://jsfiddle.net/6W2TY/
[実行]をクリックすると、小さな画像がクロムでダウンロードされ、FFでは何も実行されません。FFで機能しない理由と、それを機能させるために何をする必要があるのかを誰かが理解するのを手伝ってもらえますか?
ありがとう!
ユーザーにダウンロードしてもらいたいデータURIがメモリにあります。
このフィドルはクロームで動作しますが、FFでは動作しません:http://jsfiddle.net/6W2TY/
[実行]をクリックすると、小さな画像がクロムでダウンロードされ、FFでは何も実行されません。FFで機能しない理由と、それを機能させるために何をする必要があるのかを誰かが理解するのを手伝ってもらえますか?
ありがとう!
これは古い投稿だと思いますが、FFでファイルをダウンロードするときに同様の問題が発生したときに遭遇しました。これは、質問が書かれた時点ではFFで機能していなかった可能性がありますが、現在は機能しています。
a = document.createElement('a');
document.body.appendChild(a);
a.download = name;
a.href = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABWSURBVDhPY0xISPh//0UOA7mAiVyNMH2jBjAwkBQGjD9KGBTEJ6OEO0kG2NvbMwCjnXwDsEU5SS5ANuDhjRCGJbPFSQsDdBfIyMhQZgDIQLK9QLWkDABPsQw5I+5qmAAAAABJRU5ErkJggg==";
a.click();
元のフィドルからの変更点:
document.body.appendChild(a);
triggerEvent()
に変更a.click()
更新されたフィドルは次のとおりです:http: //jsfiddle.net/70f91ao7/6/
新しい(html5)ダウンロード属性を使用しています。私の知る限り、これはChromeでのみサポートされており、Firefoxでは(まだ)サポートされていません。
アップデート3-2018
この機能は、ほとんどすべての主要なブラウザーでサポートされるようになりました(IEはサポートされていません)。
ダウンロードを強制する別の方法は、次のようにユーザーを画像にリダイレクトすることです。
// generate the image
var img = ""
// then call a function maybe onClick or something
downloadImage(img);
function downloadImage(data) {
location.href = "data:application/octet-stream;base64," + data;
}
またはショートバージョン
location.href = "data:application/octet-stream;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABWSURBVDhPY0xISPh//0UOA7mAiVyNMH2jBjAwkBQGjD9KGBTEJ6OEO0kG2NvbMwCjnXwDsEU5SS5ANuDhjRCGJbPFSQsDdBfIyMhQZgDIQLK9QLWkDABPsQw5I+5qmAAAAABJRU5ErkJggg=="
別の方法として、イメージサーバーサイドを処理している場合は、content-dispositionヘッダーを設定してダウンロードを強制できます。
PHPの例
header('Content-Disposition: attachment; filename="image.png"');