如何在存储文件之前更改文件名

本文关键字:文件名 存储文件 | 更新日期: 2023-09-27 18:02:57

在我看来,我允许用户上传简历和选择性求职信。但是,为了避免重复,我应该能够更改文件名。下面是我的控制器中的代码片段。请告诉我如何在存储之前更改文件名。

foreach (string upload in Request.Files)
{
    if (Request.Files[upload].ContentLength == 0) continue;
    string pathToSave = Server.MapPath("~/Documents/");
    string filename = Path.GetFileName(Request.Files[upload].FileName);
    Request.Files[upload].SaveAs(Path.Combine(pathToSave, filename));
}

如何在存储文件之前更改文件名

您可以使用DateTime值使其唯一

 Request.Files[upload].SaveAs(Path.Combine(pathToSave, DateTime.Now.ToString("yyyy_MM_dd_mm_ss") + "_" + filename));
 var formattedFileName = string.Format("{0}-{1}{2}"
            , Path.GetFileNameWithoutExtension(filename)
            , Guid.NewGuid().ToString("N")
            , Path.GetExtension(filename));

如果原文件名为John.pdf,将生成John-b3d3d49c60e0426a8e4ff3fabff1c4e9.pdf

这种方法有一些优点:

  • 如果在一秒钟内上传两个或两个以上同名的文件,将不会产生冲突
  • 您可以按名称
  • 对目录中的文件进行排序

当你调用SaveAs时,你可以保存为任何你想要的

我经常这样做:

var filename = Guid.NewGuid() + Path.GetExtension(file.FileName);
fullpath = HttpContext.Current.Server.MapPath(fullpath) + filename;
file.SaveAs(fullpath);

其中fileHttpPostedFileBase