0

我有一个上传功能,我想检查数据库中是否有重复的文件名。如果有,我想重命名 jpg 以便上传的照片仍会上传。

这是我想出的代码行:

$shuffled = "qwertyuiopasdfghjkZxcvbnm";
$shuffled = str_shuffle($shuffled); 
$shuffled = $shuffled.".jpg";
rename($this->filename,$shuffled);

我在这里使用 shuffle 函数以某种方式给出一个随机的新文件名,我尝试使用其他一些步骤,如 preg_replace,但 jpg 文件本身已损坏。有任何想法吗?

4

4 回答 4

1

你的代码是:

$shuffled = "qwertyuiopasdfghjkZxcvbnm";
$shuffled = str_shuffle($shuffled); 
$shuffled = $shuffle.".jpg";
rename($this->filename,$shuffled);

第三行看起来应该是 $shuffled = $shuffled.".jpg";

于 2012-08-09T17:48:22.183 回答
0

用这个:

copy($oldfilename,rand(10000000000,99999999999).".jpeg");
unlink($oldfilename);

文件名(不带扩展名)将是大于 10000000000 且小于 99999999999 的数字

于 2012-08-09T17:21:19.013 回答
0

新文件名的扩展名在哪里???

示例

rename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");
于 2012-08-09T17:21:31.173 回答
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);
}
于 2012-08-09T17:45:22.823 回答