【发布时间】:2018-05-15 16:09:15
【问题描述】:
我在 ASP.NET MVC 5 框架的顶部有一个使用 c# 编写的应用程序。我的一个页面允许用户将文件上传到服务器。所以我使用HttpPostedFileBase 将文件上传到服务器。
但是,在将文件保存到永久位置时,我希望能够提取文件的全名并在将其移动到永久位置之前对其进行处理。
如何获取上传文件的临时全名?
我尝试了以下方法,但检查 File.Exists(tempFullname) 总是失败。
public string GetFullname(HttpPostedFileBase file)
{
string tempFullname = Path.GetTempPath() + file.FileName;
if(File.Exists(tempFullname))
{
return tempFullname;
}
return string.Empty;
}
我也尝试了以下方法,但temp.Length 抛出异常,因为文件不存在
public string GetFullname(HttpPostedFileBase file)
{
string temp = new FileInfo(file.FileName);
if(temp.Length > 0)
{
return tempFullname;
}
return string.Empty;
}
【问题讨论】:
-
为什么会存在?
-
@SamAxe 也许我错过了上传过程的想法。但在我看来,当文件上传时,它会自动放入临时文件夹,然后我选择使用
SaveAs()方法将其移动到永久位置。 -
除非您编写代码将文件放在磁盘上,否则该文件在磁盘上不存在。该文件仅作为字节流存在于内存中(附加到 HttpPostedFileBase 实例;InputStream 属性),直到您将其复制到某处。
-
文件数据在你的
file变量的内存中,别无他处。临时文件夹根本不涉及。
标签: c# asp.net-mvc asp.net-mvc-5 httppostedfilebase