2011-03-06 83 views
2

我想保留上传的文件名,以便用户可以使用相同的名称下载文件。但我该如何执行它?我看到的一个选项是将每个文件存储到具有唯一名称的文件夹(例如GUID)。任何其他选项?ASP.NET保存上传的文件名

回答

1

我觉得GUID是更好的选择,但我们通常在办公室DateTime

5

当一个文件被上传您可以提取其名称中使用:

[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是一个很好的选择),然后将这个唯一的名字与实际的文件名和用户相关联,以便稍后当他想要下载文件时,您将拥有该映射。

+0

这不是他的问题;例如,如果有人上传文件的文件名为abc.jpg,其他用户也上传相同的文件名,那么将出现问题 – 2011-03-06 09:59:41

+0

@Muhammad Akhtar,是的,你是正确的。 – 2011-03-06 10:00:31

+0

再次你编辑了你的答案,我想你再次误解了这个问题。他想要的是,如果用户上传文件的名称为abc.jpg,之后如果要下载,他将使用相同的名称。 – 2011-03-06 10:10:00