Php 上载时尝试重命名文件,但无法工作

Php 上载时尝试重命名文件,但无法工作,php,file,upload,renaming,Php,File,Upload,Renaming,嘿,我试图改变上传的文件名,如果它存在,但似乎我有一个问题。这是密码 $tempfilename = $filename["name"]; while(file_exists($location . $tempfilename)) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $shuffled = str_shuffle($chars); $stringa =

嘿,我试图改变上传的文件名,如果它存在,但似乎我有一个问题。这是密码

$tempfilename = $filename["name"]; 
while(file_exists($location . $tempfilename))
{
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; 
    $shuffled = str_shuffle($chars);
    $stringa = substr($shuffled,0,7);
    move_uploaded_file($filename["tmp_name"], $location . $filename["name"]);
    $tempfilename = $stringA.$filename["name"];
}
move_uploaded_file($filename["tmp_name"], $location.$stringa.$filename["name"]);
clearstatcache();
这似乎不起作用,而且


不知道我遗漏了什么。

PHP变量名区分大小写

$stringA !== $stringa
然而,你有没有考虑过仅仅使用一个计数器,而不是所有的混乱的字符串等等

$tempfilename = $filename["name"];
for ($i = 0; file_exists($location . $tempfilename); $i++) {
    $tempfilename = $i . $filename["name"];
}
move_uploaded_file($filename["tmp_name"], $location . $tempfilename);

文件($location.$tempfilename)
存在之前,你不应该调用
clearstatcache()
吗?我只是尝试了一下,但似乎不起作用。为什么我会在循环中看到
move\u上传的文件
,而在字符串之外?$stringA!==$stringa发生了一些事情,当我写消息时,它不在我的代码中,关于使用计数器。。这有关系吗?我的意思是最终结果是一样的——我得到了不同的名字。它仍然不会上传它如果它不上传,问题是你上传的PHP设置,你在这里做的是移动文件并重命名它。上传它100%是这样的,我已经尝试过好几次了。。现在有了dave random的答案,它也改变了名字,但是它确实保存了一些旧名字。。就像下一次运行时它是0file.jpg,下一次运行时它会变成10file.jpg,而下一次它的210.jpg:-)@YanivKossas我稍微修改了我的答案,所以它会变成
file.jpg
0file.jpg
1file.jpg
2file.jpg
-但您是说要完全删除
文件
部分吗?啊。。我理解为什么每次运行文件都会增加一个数字。。它不会增加到这个数字。。