我有一个上传功能,我想检查数据库中是否有重复的文件名。如果有,我想重命名jpg,以便仍然可以上传要上传的照片。
以下是我提出的代码行:
$shuffled = "qwertyuiopasdfghjkZxcvbnm";
$shuffled = str_shuffle($shuffled);
$shuffled = $shuffled.".jpg";
rename($this->filename,$shuffled);
我在这里使用shuffle函数以某种方式给出一个随机的新文件名, 我尝试过使用preg_replace等其他一些步骤,但jpg文件本身已损坏。有什么想法吗?
答案 0 :(得分:1)
您的代码是:
$shuffled = "qwertyuiopasdfghjkZxcvbnm";
$shuffled = str_shuffle($shuffled);
$shuffled = $shuffle.".jpg";
rename($this->filename,$shuffled);
第三行看起来应该是$ shuffled = $ shuffled。“。jpg”;
答案 1 :(得分:0)
使用它:
copy($oldfilename,rand(10000000000,99999999999).".jpeg");
unlink($oldfilename);
文件名(不带扩展名)将是一个大于10000000000且小于99999999999的数字
答案 2 :(得分:0)
新文件名中的扩展名在哪里???
Exmple
rename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");
答案 3 :(得分:0)
如果要使用随机文件名,请使用microtime()生成随机字符串。 一个更好的解决方案是:
if(is_file($filename))
{
$filenameSplit = explode('.', $filename);
$i = 1;
while(is_file($filenameSplit[0] . "($i)." . $filenameSplit[1]))
{
$i++;
}
$newFilename = $filenameSplit[0] . "($i)." . $filenameSplit[1];
rename($filename, $newFilename);
}