【问题标题】:ASP.NET Keep uploaded file nameASP.NET 保留上传的文件名
【发布时间】:2011-07-09 17:59:17
【问题描述】:

我想保留上传的文件名,以便用户能够以相同的名称下载文件。但是我该如何实现呢?我看到的一个选项是将每个文件存储到具有唯一名称(例如 GUID)的文件夹中。还有其他选择吗?

【问题讨论】:

    标签: .net asp.net asp.net-mvc file-upload


    【解决方案1】:

    我认为GUID 是更好的选择,但我们通常在办公室使用DateTime

    【讨论】:

      【解决方案2】:

      上传文件后,您可以提取其名称:

      [HttpPost]
      public ActionResult Index(HttpPostedFileBase file) 
      {
          if (file != null && file.ContentLength > 0) 
          {
              // Get the filename of the uploaded file
              var fileName = Path.GetFileName(file.FileName);
              var savedFilename = Guid.NewGuid().ToString();
      
              // TODO: Associate the fileName with the savedFilename
              // and probably the currently connected user in the database
      
              // Save the file inside the Uploads folder
              var path = Path.Combine(Server.MapPath("~/Uploads"), savedFilename);
              file.SaveAs(path);
          }
          return RedirectToAction("Index");
      }
      

      您可以将文件以某个唯一名称(GUID 是一个不错的选择)存储在磁盘上,然后将此唯一名称与实际文件名和用户相关联,以便稍后当他想要下载文件时,您将拥有映射.

      【讨论】:

      • 这不是他的问题;例如,如果有人上传文件名为 abc.jpg 的文件,而其他用户也上传了相同的文件名,那么就会有问题
      • 您再次编辑了答案,我认为您再次误解了这个问题。他想要的是,如果用户上传名为 abc.jpg 的文件,然后如果要下载,他将使用相同的名称。
      • @Muhammad Akhtar,因为我们已将原始文件名与存储在数据库内服务器上的实际文件名相关联,因此应用程序可以使用原始文件名生成链接,并且此链接将向控制器发送请求将提供文件的操作。因此,用户在下载时会在页面上看到原始文件名。但下载文件是另一部分。
      猜你喜欢
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多