根据文件是否存在重命名文件

本文关键字:文件 重命名 存在 是否 | 更新日期: 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 );