WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

ダウンロードの際の拡張子

by WebSurfer 2016年6月12日 15:27

以下は Internet Exploler (IE) に限った話ですのでご注意ください。

IE でファイルをダウンロードする際、応答ヘッダに Content-Type のみが指定されていて、Content-Disposition が指定されてない場合、ファイルの拡張子はどうなるかという話を書きます。

レジストリでの拡張子設定

簡単に言うと、Microsoft の Support の記事「ファイルのダウンロードダイアログで表示されるファイル名の命名規則」の「詳細」のセクションの 2 に書いてありますように、レジストリの HKEY_CLASS_ROOT\MIME\Database\Content Type の設定によります。

具体例を書くと以下の通りです。

上の画像はレジストリの Content Type が image/tiff の拡張子の設定です。自分の開発マシン(Vista SP2 32-bit)ではデフォルトで Extension のデータは .tif になっていました。

開発マシンのローカル IIS7 に設定した images フォルダに、内容は全く同じで拡張子のみ .tiff と .tif と異なる 2 つの tiff 画像ファイルを作り、以下のように a 要素で直リンクします。それをブラウザに表示してリンクをクリックするとどうなるでしょうか?

<a href="/images/tiffdocument.tiff">tiffdocument.tiff</a>

<a href="/images/tiffdocument.tif">tiffdocument.tif</a>

実際に 2 つのファイルの拡張子は .tiff / .tif と異なるのですが、IIS7 がそれらの画像を取得してダウンロードする際、応答ヘッダに含まれる Content-Type はいずれの場合も image/tiff と設定します。(注:image/tif では IE が認識できません)

Content Type: image/tiff を受信した IE のあるクライアント PC のレジストリ設定は、上の画像が示すように image/tiff の Extension のデータが .tif となっているので、ダウンロードされた画像ファイルの名前.拡張子はどちらのリンクも tiffdocument.tif になります。

ちなみに、上の画像のレジストリの Extension のデータ .tif を .tiff に変更すると、ダウンロードされたファイルの拡張子は .tiff になります。

ダウンロードされたファイルのファイル名.拡張子を実際のファイルの通りにするには、サーバー側で Content-Disposition ヘッダでファイル名.拡張子をきちんと指定すれば、IE の場合は指定したとおりになります。

ただし、先の記事「ダウンロードの際の拡張子 と MIME Type の指定」に書きましたように、Content-Type の方を優先するブラウザもあります。

なので、ダウンロードするための HTTP ハンドラ等を作る際は、Content-Type と Content-Disposition の両方を正しく設定するように注意した方がよさそうです。

なお、プログラムで Content-Type を設定する際は image/tif ではなくて image/tiff としないと IE は認識しませんので注意してください。image/jpg も同様にダメで image/jpeg としないと IE は認識しません。

Tags: ,

Upload Download

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  2017年11月  >>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

View posts in large calendar