1

我目前正在处理 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 ) );
}
                    }
4

4 回答 4

1

File.Exists(filename)期望完整的文件路径来查看文件是否存在。

但在这一行inputFile.PostedFile.SaveAs中,您将文件路径连接为

directory + "//" + fileName.

那么您fileName实际上是由完整路径组成,还是只是带有扩展名的实际文件名?

如果fileName包含完整路径,则inputFile.PostedFile.SaveAs不应工作,因为它会指向无效位置,并且如果fileName仅包含文件名而不是完整路径,则File.Exists不应工作。无论哪种方式,您的逻辑都是有缺陷的。

我想,现在你知道要改变什么了。

另外,不要使用计数器,只需附加DateTime.Now.ToString("hhmmddttmmss")fileName以使其唯一。

于 2013-05-28T07:46:26.133 回答
1

你打电话时:

if(File.Exists(filename))

确保文件名包含磁盘上保存文件的完整路径。

从外观上看,您可能希望使用 Path.Combine(directory, fileName) 而不仅仅是文件名。

于 2013-05-28T07:47:19.583 回答
1

您可以将文件名生成为

filename = filename + DateTime.Now.Ticks.ToString();

这样它就永远是新文件。我的意思是它将保留旧文件和新文件。

我希望它会帮助你.. :)

于 2013-05-28T07:49:25.343 回答
0

尝试这个

    fileName= Path.Combine(directory,fileName );
    if(File.Exists(filename))
    {
        fileName = fileName + DateTime.Now.Ticks;         
    }
    inputFile.PostedFile.SaveAs( fileName );
于 2013-05-28T07:51:39.473 回答