【发布时间】:2023-03-05 13:27:02
【问题描述】:
我一直在环顾四周,似乎应该在文件重命名时执行// if sucess:
if(rename("$filepath$oldfilename", "$filepath$filename")===true) { // if success }
不幸的是,由于此函数会重命名文件,即使存在另一个同名文件,它也总是成功。
但更糟糕的是......由于另一个同名文件已经存在,它会以某种方式被删除......
有人知道如何防止这种情况吗?为什么会这样?!
其他信息:
我让用户有机会通过文本区域更改文件名,当它发布时,重命名功能将启动:
if(rename("$filepath$oldfilename", "$filepath$filename")===true)
{
$WhatToUpdateQueryResult = mysql_query($WhatToUpdateQuery) or die ("query fout ". mysql_error() );
if ($WhatToUpdateQueryResult == 1)
{
$uploadmsg = "Document name successfully updated.<br/> From: $oldfilename <br/> To: $filename.";
}
}
else
{
$uploadmsg = "Can't update document. A file with the same name already exists.";
}
注意:只要我将名称更改为不存在的名称,它就可以正常工作。但是,它最终总是正确的。
【问题讨论】:
-
您可以先使用
file_exists()检查文件是否存在,如果存在则不要更新文件。 -
“它以某种方式被删除” - rename() 的文档明确指出:“如果新名称存在,它将被覆盖。”
-
rename 基本上只是 shell
mv oldfile newfile的 php 等价物。毫不奇怪,它正在“删除”文件。
标签: php file rename file-rename