25

ASP:File コントロールを使用してサイトにファイルをアップロードすると、FileName プロパティが IE と Firefox で異なります。Firefox ではファイルの名前を提供するだけですが、IE ではファイルへのフル パスを提供します。

コードを追加することでこれを回避しました:

Dim FileName As String = file.FileName
If FileName.LastIndexOf("\") > 0 Then
    FileName = FileName.Substring(FileName.LastIndexOf("\") + 1)
End If

しかし、それがブラウザによって異なる理由はわかりません。誰かがこれの理由を知っていますか?

ありがとう。

4

4 に答える 4

31

IE と Chrome でテスト済みの簡単な回避策

new FileInfo(myHttpPostedFileBase.FileName).Name

これにより、パスが含まれている場合でも、常にファイル名だけを取得できます。

于 2011-10-13T08:16:42.890 に答える
12

これはセキュリティ/プライバシー上の問題です。firefox/mozilla はこれを正しく行っており、アドイン、アプレット、Silverlight、フラッシュ、またはその他のメカニズムなしでは完全なパスを取得する方法はありません。

Mozilla のスタンスに関する詳細情報は次のとおりです。

https://developer.mozilla.org/en/Updating_web_applications_for_Firefox_3

セキュリティの変更 -> ファイル アップロード フィールドのセクションを参照してください。

IE がこれに続いて、一貫した安全な環境が実現されることを願っています。

于 2008-12-19T23:54:09.100 に答える
7

IE8 では、この動作が変更され、フル パスではなく、ファイル名のみが渡されます。;-)

IE8 の変更について説明している IE ブログ投稿への詳細とリンク: http://blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading-a-file-using-fileupload-control-fails- in-ie8.aspx

ファイル名を解析しようとしているサーバー側アプリはチェックする必要がありますが、ファイル名にバックスラッシュがあるとは想定していません。

IE8 ユーザー設定のオーバーライド: http://blogs.msdn.com/blogfiles/webtopics/WindowsLiveWriter/UploadingafileusingFileUploadcontrolfail_167/clip_image002_2.jpg

于 2008-12-20T00:27:55.007 に答える