在我的视图中,我允许用户上传简历和可选的求职信。 但是为避免重复,我应该能够更改文件名。下面是我控制器中的代码段。请告知我如何在存储之前更改文件名。
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));
}
答案 0 :(得分:5)
您可以使用DateTime值使其唯一
Request.Files[upload].SaveAs(Path.Combine(pathToSave, DateTime.Now.ToString("yyyy_MM_dd_mm_ss") + "_" + filename));
答案 1 :(得分:4)
当您致电SaveAs
时,您可以随意保存。
我经常做这样的事情:
var filename = Guid.NewGuid() + Path.GetExtension(file.FileName);
fullpath = HttpContext.Current.Server.MapPath(fullpath) + filename;
file.SaveAs(fullpath);
其中file
是HttpPostedFileBase
答案 2 :(得分:1)
var formattedFileName = string.Format("{0}-{1}{2}"
, Path.GetFileNameWithoutExtension(filename)
, Guid.NewGuid().ToString("N")
, Path.GetExtension(filename));
如果原始文件名为John.pdf
,则会生成John-b3d3d49c60e0426a8e4ff3fabff1c4e9.pdf
这种方法有一些优点: