WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

IE でアップロードする際のファイル名

by WebSurfer 6. August 2015 11:52

Internet Explorer (IE) でファイルをアップロードする際、ファイル名にフルパスが付与されることがあります。

IE のセキュリティ設定

上の画像は IE9 のローカルイントラネットゾーンのセキュリティ設定ですが、赤枠で囲んだ部分が示すように、デフォルトで [有効にする] が選択されており、送信データの Content-Disposition: ... filename="xxx" の xxx はフルパスになります。

インターネットゾーンでも IE7 以前はデフォルトで [有効にする] が選択されているそうです(未確認です)。ちなみに IE9 ではデフォルトで [無効にする] が選択されているのは確認しました。

知ってました? 実は自分は最近まで知らなかったです。(汗) 調べていませんが、他のブラウザでも同様な問題があるかもしれません。

今までその問題に遭遇したことはなかったのですが、それはファイル名の取得に FileUpload.FileName プロパティ を使っていたので、問題を免れていたと言うことのようです。

上のリンク先の MSDN ライブラリの「解説」に、"FileUpload コントロールを使用して、アップロードする、クライアント上のファイルの名前を取得します。FileName プロパティが返すファイル名には、クライアント上のファイルのパスが含まれません。" と書いてありますね。

ちなみに、HttpPostedFile.FileName プロパティ では、ブラウザからフルパスでファイル名が送信されてくれば、結果はフルパスになります。

なので、HttpPostedFile.FileName プロパティを使わざるを得ない場合は(複数ファイルを同時アップロードするような場合が該当するでしょうか)、Path.GetFileName メソッド を使ってファイル名を取得するのがよさそうです。

そういえば、昔ネット上で見かけてサンプルコードに Path.GetFileName メソッドを使った例が多々あったような記憶があります。

Tags: ,

Upload Download

About this blog

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

Calendar

<<  October 2019  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar