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 在评论中指出的那样,由于浏览器的安全限制,这是不可能的。他们只会告诉您上传文件的名称,而不是文件的路径。

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

编辑: 现在我IE手头有,我什至意识到如果您获取所选值,这通过 javascript 为您提供完整正确的路径,例如通过document.forms.file.value.

这是您不应依赖的 IMO 不良行为。浏览器应该隐藏这些机密数据,你最好不要尝试破解一个可能会工作一段时间的解决方案,但它在不同的浏览器甚至版本之间并不安全。也许更好的问题是,无论如何,您要对客户的完整路径做什么?可能有另一种不需要客户端路径的方法。

于 2013-07-24T06:16:09.063 回答