【发布时间】:2021-04-07 10:24:24
【问题描述】:
我正在尝试将图像文件上传到服务器并在这样做时创建一个随机名称。我遇到的问题是,有时(过于频繁)它会创建相同的文件名,但会创建具有不同扩展名的文件。
我的上传代码如下,我要做的是添加一个检查以确保该名称未被使用但具有不同的扩展名。
示例 - da4fb5c6e93e74d3df8527599fa62642.jpg & da4fb5c6e93e74d3df8527599fa62642.JPG
if ($_FILES['file']['name']) {if (!$_FILES['file']['error']){
$name = md5(mt_rand(100, 200));
$ext = explode('.', $_FILES['file']['name']);
$filename = $name . '.' . $ext[1];
$destination = $_SERVER['DOCUMENT_ROOT'] . '/images/infopages/' . $filename; //change this directory
$location = $_FILES["file"]["tmp_name"];
move_uploaded_file($location, $destination);
echo '/images/infopages/' . $filename;
}else{
echo $message = 'Ooops! Your upload triggered the following error: '.$_FILES['file']['error'];
}
}
感谢任何帮助。
【问题讨论】:
-
"...有时(过于频繁)它会创建相同的文件名..." - 您是否考虑过为您的算法添加随机性? 100 个数字的范围不允许有很大的摆动空间。您可以使用 UUID 来保证大规模的唯一性。