我目前正在处理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 ) );
}
}
答案 0 :(得分:1)
File.Exists(filename)
需要完整的文件路径来查看文件是否存在。
但在行inputFile.PostedFile.SaveAs
中,您将文件路径连接为
directory + "//" + fileName
。
你的fileName
实际上是由完整路径组成的,还是仅包含扩展名的实际文件名?
如果fileName
由fullPath组成,则inputFile.PostedFile.SaveAs
不起作用,因为它会指向无效的位置,如果fileName
只包含文件名而不是完整路径,那么, File.Exists
不应该有用。无论哪种方式,你的逻辑都有缺陷。
我想,现在你知道了,要改变什么。
另外,不是使用计数器,只需将DateTime.Now.ToString("hhmmddttmmss")
附加到fileName
即可使其唯一。
答案 1 :(得分:1)
致电时:
if(File.Exists(filename))
确保文件名包含磁盘上保存文件的完整路径。
从它的外观来看,你可能想要使用Path.Combine(目录,fileName),而不仅仅是文件名。
答案 2 :(得分:1)
您可以将文件名生成为
filename = filename + DateTime.Now.Ticks.ToString();
以便它始终是新文件。我的意思是它将保留旧文件和新文件。
我希望它会对你有所帮助.. :)
答案 3 :(得分:0)
试试这个
fileName= Path.Combine(directory,fileName );
if(File.Exists(filename))
{
fileName = fileName + DateTime.Now.Ticks;
}
inputFile.PostedFile.SaveAs( fileName );