20

Firefox および Chrome では、このリンク プロパティ "download=img.jpg" は正常に機能し、新しいタブまたはページの代わりにダウンロード ウィンドウが表示されます。

<a href="img.jpg" download="img.jpg">Download Image</a>

しかし、Safari と IE では、このリンクから新しいページが表示されます。

では、Safari および IE ブラウザーでこれを処理するためのシンプルで効果的なワークフローは何ですか?

4

4 に答える 4

14

Apache サーバーで作業していますか? その場合は、これを .htaccess ファイルに追加するだけです。

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{QUERY_STRING} fdl=1
RewriteRule .? - [T=application/octet-stream]

ファイルであることを確認します パラメータ fdl=1 がクエリ文字列にあるかどうかを確認します octet-stream/force download として出力します

ブラウザにそのサイト内の何かのダウンロードを開始させたい場合は、URL にパラメータを追加するだけです:

<a href="img.jpg?fdl=1">Download Image</a>

IIS Windows サーバーで同じことを行うには、送信規則を web.config に追加します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules>
                <rule name="Force Download">
                    <match serverVariable="RESPONSE_Content_Disposition" pattern=".?" negate="false" />
                    <action type="Rewrite" value="application/octet-stream" replace="true" />
                    <conditions>
                        <add input="{QUERY_STRING}" pattern="fdl=1" />
                    </conditions>
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

編集 (2016 年 10 月 4 日):

このdownload属性はまだすべてのブラウザで完全に採用されていないようです。

JavaScript / ブラウザー ベースの実装については、サポートしていないブラウザーで機能を保存するためのポリフィルであるFileSaver.jsを見ることができます。ただし、完全なカバー力はありません。

于 2016-01-19T22:06:50.710 に答える
0

これは、JavaScript を使用して IE で行う方法です。ただし、Safariの解決策はまだ見つかりません

var canvas = document.createElement('canvas');
var img = document.createElement('img');
img.onload = function(e) {
    canvas.width = img.width;
    canvas.height = img.height;
    var context = canvas.getContext('2d');
    context.drawImage( img, 0, 0, img.width, img.height);
    window.navigator.msSaveBlob(canvas.msToBlob(),'image.jpg');
}
img.src = 'img.jpg;
于 2016-03-07T18:13:41.300 に答える
-1
navigator.msSaveBlob(blob, filename)

https://msdn.microsoft.com/sv-se/library/windows/apps/hh772331

残念ながら、私は Safari でそれを行う方法を知りません。

于 2015-02-23T10:01:20.210 に答える