WebSurfer's Home

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

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

by WebSurfer 2015年8月6日 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月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年3月  >>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

View posts in large calendar