我正在尝试获取上传文件的文件路径,并且我正在使用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);
....
}
答案 0 :(得分:2)
正如PKKG在评论中指出的那样,由于浏览器的安全限制,这是不可能的。 他们只会告诉你上传文件的名称,而不是它的路径。
此外,例如,Google Chrome会在尝试通过javascript C:\fakepath\TestFile.xml
抓取它时为您提供伪造的路径。
修改强>
现在我已经 这是你不应该依赖的IMO不良行为。浏览器应该隐藏这些自信的数据,你可能最好不要试图破解可能有效的解决方案,但在不同的浏览器甚至版本中都不安全。
也许更好的问题是,无论如何,你想要对客户的完整路径做什么?可能有另一种方法而不需要客户端的路径。IE
了,我甚至意识到如果你抓住所选的值,将通过javascript为你提供完整的正确路径,例如通过document.forms.file.value
。< / p>