16

私がasp.netについて理解していることから、FileUpload.FileNameはフルパスを返しますが、Firefoxではファイル名だけを返します。HTMLでエンコードされたファイル名が必要なだけなので、返された文字列からパスを削除するにはどうすればよいですか。

4

3 に答える 3

24

Path静的クラスを使用してファイル名を取得できます。

var fileName = Path.GetFileName(somePath);

そしてそれをエンコードするためのHttpUtility静的クラス。

var encoded = HttpUtility.HtmlEncode(fileName);
于 2012-08-24T20:52:37.617 に答える
5

そのため、[ツール]->[インターネットオプション]->[セキュリティ]の下にIE設定(IE8だけでなく新しいバージョンでも)があり、ファイルのアップロードにローカルパスを含めたり除外したりできます。

IE8ローカルディレクトリのパス設定

そのため、フルパス情報を保持したくない場合、IEをサポートしたい場合は、パスを明示的に削除するのが最も安全です(他のブラウザーにそのような設定があるかどうかはわかりません)。

Joshが述べたように、Path.GetFileName(...)は適切なオプションです。string.SplitをLinqと組み合わせて使用​​することもできます。

string fileNameOnly = somePath.Split('\\').Last();
于 2014-08-15T16:36:04.990 に答える
1
Path.GetFileName(Request.Files["file"].FileName)
于 2016-10-06T19:43:56.610 に答える