从HttpPostedFile获取文件路径

时间:2013-07-24 05:32:06

标签: c# asp.net-mvc

我正在尝试获取上传文件的文件路径,并且我正在使用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);

                ....
            }

1 个答案:

答案 0 :(得分:2)

正如PKKG在评论中指出的那样,由于浏览器的安全限制,这是不可能的。 他们只会告诉你上传文件的名称,而不是它的路径。

此外,例如,Google Chrome会在尝试通过javascript C:\fakepath\TestFile.xml抓取它时为您提供伪造的路径。

修改 现在我已经IE了,我甚至意识到如果你抓住所选的值,通过javascript为你提供完整的正确路径,例如通过document.forms.file.value。< / p>

这是你不应该依赖的IMO不良行为。浏览器应该隐藏这些自信的数据,你可能最好不要试图破解可能有效的解决方案,但在不同的浏览器甚至版本中都不安全。 也许更好的问题是,无论如何,你想要对客户的完整路径做什么?可能有另一种方法而不需要客户端的路径。