IIS7 を使用して、クライアント ブラウザにファイルをブラウザ内で表示するのではなく、強制的にダウンロードさせる方法はありますか? 私の場合、ブラウザーに強制的にすべての MP4 ビデオ ファイルをダウンロードさせたいと考えています。
質問する
8232 次
2 に答える
5
このブログから答えを見つけました。
IIS7 Url Rewrite モジュールを使用すると、Content-Disposition
ヘッダーを変更して、クライアント ブラウザーがファイルを表示するのではなく、ダウンロードする必要があることを示唆できます。
IIS マネージャーの使用 (例として mp4)
- IIS7 の URL 書き換えモジュールが有効になっていることを確認してください
- IIS7 マネージャーを開く
- ダウンロードを強制するサイト (またはサブ サイト) に移動します。
- 機能ビューで、[URL 書き換え] を選択します。
- 右側の列で [前提条件を表示] を選択します。
- 次の前提条件を追加します
- 名前: FileIsMP4
- 使用: 正規表現
- 論理グループ化: すべて一致
- 条件入力:
{REQUEST_FILENAME}
- 入力文字列のチェック: パターンに一致
- パターン:
\.mp4$
- ルールの URL 書き換えリストに戻り、次のアウトバウンド ルールを追加します。
- 名前: MP4 の強制ダウンロード
- 前提条件: FileIsMP4
- 一致 - 一致するスコープ: サーバー変数
- 一致 - 変数名: RESPONSE_Content-Disposition
- Match - 変数値: パターンに一致
- 一致 - 使用: 正規表現
- 一致 - パターン: .*
- 一致 - 大文字と小文字を区別しない - はい
- 条件 - 論理グループ: すべて一致
- 条件 - 入力:
{REQUEST_FILENAME}
- 条件 - タイプ: パターンに一致
- 条件 - パターン:
(.*)\\([^/]+)\.mp4$
- 条件 - 条件全体でキャプチャ グループを追跡する: はい
- アクション - アクション タイプ: 書き換え
- アクション - アクションのプロパティ -
Value: attachment; filename={C:2}.mp4
- アクション - 既存のサーバー変数の値を置き換えます: はい
- アクション - 後続のルールの処理を停止します: いいえ
Web.Config を変更する
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
...
<rewrite>
<outboundRules>
<rule name="Forcing Download for MP4s" preCondition="FileIsMP4">
<match serverVariable="RESPONSE_Content-Disposition" pattern=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" pattern="(.*)\\([^/]+)\.mp4$" />
</conditions>
<action type="Rewrite" value="attachment; filename={C:2}.mp4" />
</rule>
<preConditions>
<preCondition name="FileIsMP4">
<add input="{REQUEST_FILENAME}" pattern="\.mp4$" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
...
</system.webServer>
</configuration>
于 2013-10-16T13:26:56.203 に答える
-1
ありがとう、これはまさに私が必要としていたものです。少し調整して、「?download=yes」のクエリ文字列を追加してファイルをダウンロードするかどうかを指定する機能を追加しました。
<outboundRules>
<rule name="Force download with query string" preCondition="DownloadableFileTypes">
<match serverVariable="RESPONSE_Content-Disposition" pattern=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" pattern="(.*)\\([^/]+)\.(.+)$" />
<add input="{QUERY_STRING}" pattern="^.*download=yes.*$" />
</conditions>
<action type="Rewrite" value="attachment; filename={C:2}.{C:3}" />
</rule>
<preConditions>
<preCondition name="DownloadableFileTypes" logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" pattern="\.mp3$" />
<add input="{REQUEST_FILENAME}" pattern="\.pdf$" />
<add input="{REQUEST_FILENAME}" pattern="\.doc$" />
<add input="{REQUEST_FILENAME}" pattern="\.docx$" />
<add input="{REQUEST_FILENAME}" pattern="\.xls$" />
<add input="{REQUEST_FILENAME}" pattern="\.xlsx$" />
<add input="{REQUEST_FILENAME}" pattern="\.mp4$" />
</preCondition>
</preConditions>
</outboundRules>
于 2017-02-02T23:26:00.113 に答える