2

アップロード ファイルのファイル パスを取得しようとしていますが、HttpPostedFile を使用していますが、パス名を取得するオプションではないようです。本当?これについてどうすればいいですか?

foreach (string s in Request.Files)
            {
                HttpPostedFile file = Request.Files[s];
                string fileName = file.FileName;
                string filePath = Path.GetFullPath(fileName);
                string fileExtension = "";

                if (!string.IsNullOrEmpty(fileName))
                    fileExtension = Path.GetExtension(fileName);

                ....
            }
4

1 に答える 1

2

PKKG がコメントで指摘したように、これはブラウザーによるセキュリティ制限により不可能です。アップロードされたファイルのパスではなく、アップロードされたファイルの名前のみが通知されます。

また、たとえば、Google Chrome は、javascript を介してパスを取得しようとすると、偽のパスを提供しますC:\fakepath\TestFile.xml

編集:IE手元にある のでたとえばdocument.forms.file.value.

これは、信頼すべきではない IMO の悪い動作です。ブラウザはこの機密データを非表示にする必要があり、しばらくは機能する可能性のあるソリューションをハッキングしようとしない方がよいでしょうが、ブラウザやバージョンが異なると安全ではありません. たぶん、より良い質問は、とにかくクライアントのフルパスで何をしようとしているのかということです. クライアントのパスを必要としない別のアプローチがあるかもしれません。

于 2013-07-24T06:16:09.063 に答える