我在mySQL表中有一个字段用于文件名,当新文件上传时,函数检查该文件名是否已经存在。如果相同的文件名存在,我如何更改新文件名:
filename.jpg, filename_(1).jpg, filename_(2).jpg等
我得到了大部分如何做到这一点,只是不确定如何使重命名它的函数知道文件名中是什么数字(如果有的话)以及下一个数字是什么。
欢呼
最简单的答案是在上传时生成唯一的文件名,使用时间和用户的某种组合。比如:
$user_id . time() . $user_provided_name . "." . $file_type
如果您在循环中使用file_exists()来探测文件的存在,那么您可以包含这个来增加数字后缀:
$filename = preg_replace('# (_'( ('d+) '))? (?='.'w+$) #ex',
'"_(" . ($2+1) . ")"', $filename, 1);
同样可以用strpos/substr函数完成。这样看起来就不像胡言乱语了
你可以使用COUNT:
SELECT COUNT(*) AS NumberFiles FROM Files WHERE FileName = '$filename'
然后,根据您的查询结果,使用$result[0]['NumberFiles']
重命名您的文件。
您可能还想锁定您的文件表(或任何它是)