如果文件名已经存在,我是否可以使用PHP中的漂亮解决方案来扩展文件名以自动增加编号? 我不想将上传的文件重命名为一些难以理解的东西。 因此,我认为这样很好:(允许所有图像文件。)
Cover.png
Cover (1).png
Cover (2).png
…
如果文件名已经存在,我是否可以使用PHP中的漂亮解决方案来扩展文件名以自动增加编号? 我不想将上传的文件重命名为一些难以理解的东西。 因此,我认为这样很好:(允许所有图像文件。)
Cover.png
Cover (1).png
Cover (2).png
…
$file=pathinfo(<your file>);
$filename=$file['filename'];
接下来,让我们检查文件是否已经存在,并保存新的文件名,直到不存在为止:
$i=1;
while(file_exists($filename.".".$file['extension'])){
$filename=$file['filename']." ($i)";
$i++;
}
这里有一个原始文件,其中包含您尚不存在的<添加一些内容>
。
编辑: 已添加自动递增编号。
$filename." ($i)";
是什么意思?我没有看到任何赋值。 - Salman A明白:
if (preg_match('/(^.*?)+(?:\((\d+)\))?(\.(?:\w){0,3}$)/si', $FILE_NAME, $regs)) {
$filename = $regs[1];
$copies = (int)$regs[2];
$fileext = $regs[3];
$fullfile = $FILE_DIRECTORY.$FILE_NAME;
while(file_exists($fullfile) && !is_dir($fullfile))
{
$copies = $copies+1;
$FILE_NAME = $filename."(".$copies.")".$fileext;
$fullfile = $FILE_DIRECTORY.$FILE_NAME;
}
}
return $FILE_NAME;
function get_unique_file_name($path, $filename) {
$file_parts = explode(".", $filename);
$ext = array_pop($file_parts);
$name = implode(".", $file_parts);
$i = 1;
while (file_exists($path . $filename)) {
$filename = $name . '-' . ($i++) . '.' . $ext;
}
return $filename;
}
将该函数用作
$path = __DIR__ . '/tmp/';
$fileInput = 'userfile';
$filename = $path .
get_unique_file_name($path, basename($_FILES[$fileInput]['name']));
if (move_uploaded_file($_FILES[$fileInput]['tmp_name'], $filename)) {
return $filename;
}
您可以在 GitHub 页面 这里 获取可用的脚本。
file_exists()
函数和rename()
函数来实现你想要做的事情!