【问题标题】:How to get the fullname of the file stored in the temp folder in asp.net mvc 5 app?如何获取存储在 asp.net mvc 5 应用程序的 temp 文件夹中的文件的全名?
【发布时间】: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


【解决方案1】:

要获取需要先保存文件的全名,不先保存我无法获取文件的位置!

var filePath = Path.Combine(Server.MapPath("<A folder you want>"), file.FileName);

file.Save(filePath);

这样,filePath就是你文件的完整路径

【讨论】:

    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多