当用户从文件上传控件上传时,我需要更改文件名。
如果文件名重复,则会在文件名上添加计数,但此处不起作用。
我的意思是,当我上传文件 00076007-2013.pdf 时,它将保存在具有该名称 00076007-2013(0).pdf
的主机中但是我再次要在主机中上传 00076007-2013.pdf 时,它会覆盖最后一个( 00076007-2013(0).pdf )。
但是我想要是否有 00076007-2013.pdf 文件保存在主机中,其名称为 00076007-2013(1).pdf 。
我该如何解决这个问题。
我的下面的代码。
int count = 0;
string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
string FileExstention = Path.GetExtension(FileUpload1.FileName);
string[] files = Directory.GetFiles(Server.MapPath("/public/2Version/sk_PDF/"));
if (FileUpload1.HasFile)
{
if (FileExstention == ".pdf")
{
try
{
if (File.Exists(Server.MapPath("/public/2Version/sk_PDF/") + fileName.ToString()))
{
foreach (string s in files)
{
string filename = string.Empty;
filename = Path.GetFileName(s).Substring(0, Path.GetFileName(s).LastIndexOf("."));
if (filename.Contains("("))
{
filename = filename.Substring(0, filename.LastIndexOf("("));
}
if (filename == fileName.ToString().Trim())
{
count++;
}
FileUpload1.PostedFile.SaveAs(Server.MapPath("/public/2Version/sk_PDF/") + filename.ToString() + "(" + count.ToString() + ")" + FileExstention);
}
}
else
{
FileUpload1.PostedFile.SaveAs(Server.MapPath("/public/2Version/sk_PDF/") + fileName.ToString());
}
}
catch (Exception ex)
{
throw ex;
}
}
}
编辑#01 这是输出。
我已经上传了 00076007-2013.pdf 文件3次。
第一次确定, 00076007-2013.pdf 。
第二次确定, 00076007-2013(0).pdf 。
上次保存他的时间是 00076007-2013(0).pdf ,而不是 00076007-2013(1).pdf
答案 0 :(得分:1)
请更改此部分:
if (filename.Contains("("))
{
filename = filename.Substring(0, filename.LastIndexOf("("));
}
使用:
if (filename.Contains("("))
{
filename = filename.Substring(0, filename.LastIndexOf("("));
count++;
}
我希望我能帮上忙。