根据文件是否存在重命名文件
本文关键字:文件 重命名 存在 是否 | 更新日期: 2023-09-27 18:15:44
我目前正在处理ipad的一个问题,当你通过我的网站上传图像时,图像被重命名为"image.jpg",这是一个问题,如果它在同一目录下,它可能会导致问题。因此,我试图阻止它重命名文件或在其末尾添加增量数字,但我无法使其正常运行。
我已经使用了这一小段代码来尝试修复它,但是它似乎不起作用。
if(File.Exists(filename))
{
fileName = String.Format("{0}({1}", fileName, count++);
inputFile.PostedFile.SaveAs( String.Format( "{0}''{1}", directory, fileName ) );
}
else
{
inputFile.PostedFile.SaveAs( String.Format( "{0}''{1}", directory, fileName ) );
}
}
File.Exists(filename)
期望完整的文件路径查看文件是否存在
但是在inputFile.PostedFile.SaveAs
行中,您将filepath连接为
directory + "//" + fileName
.
那么您的fileName
实际上包含完整路径,还是仅包含扩展名的实际文件名?
如果fileName
由fullPath组成,inputFile.PostedFile.SaveAs
不应该工作,因为它会指向无效的位置,如果fileName
只由文件名组成,而不是完整的路径,那么File.Exists
不应该工作。不管怎样,你的逻辑都有缺陷。
我想,现在你知道该改什么了。
也不使用计数器,只需将DateTime.Now.ToString("hhmmddttmmss")
附加到fileName
以使其唯一。
当你打电话时:
if(File.Exists(filename))
确保filename包含磁盘上保存文件的完整路径。
从它的外观来看,您可能想要使用Path。组合(directory, fileName)而不是单独的fileName
您可以生成文件名为
filename = filename + DateTime.Now.Ticks.ToString();
以便它始终是新文件。我的意思是它将保留旧文件和新文件。
我希望它能帮助你…:)
try this
fileName= Path.Combine(directory,fileName );
if(File.Exists(filename))
{
fileName = fileName + DateTime.Now.Ticks;
}
inputFile.PostedFile.SaveAs( fileName );