如何在存储文件之前更改文件名
本文关键字:文件名 存储文件 | 更新日期: 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);
其中file
为HttpPostedFileBase