照片上传防止覆盖

13 浏览
0 Comments

照片上传防止覆盖

我按照这个链接http://www.w3schools.com/php/php_file_upload.asp实现了一个照片上传功能,但是当存在相同名称的文件时,我希望它不会说文件已经上传,而是将文件名更改为之前未使用过的名称。\n换句话说,如果存在相同名称的照片,我仍然希望它上传,但不想覆盖现有的文件。我想用以下内容替换它来实现这个功能:\n

// 检查文件是否已存在
if (file_exists($target_file)) {
echo "对不起,文件已存在。";
$uploadOk = 0;

\n改成这样:\n

// 检查文件是否已存在
if (file_exists($target_file)) {
"执行一些操作以更改文件名"
$uploadOk = 1;

\n更新:我已经解决了这个问题。我只需将每个图像重命名为唯一的ID,如下所述。谢谢。\n另外,在建议中应该是这样的:\n

$newTarget_file = $target_dir . uniqid() . "." . end($target_file);

0
0 Comments

问题的出现原因是上传的文件可能会出现重名,导致文件被覆盖。解决方法是给文件添加随机数字作为新的文件名,确保每次上传的文件都有一个唯一的文件名。

以下是解决该问题的代码示例:

$name = explode(".",$_FILES["file"]["name"]);
$newName = rand(1,99999) . '.' .end($name);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newName );

另一种解决方法是在上传之前检查文件名是否已存在,如果存在,则在文件名中添加一些内容以重命名文件。

if (file_exists("../img/imageDirectory/" . $_FILES["file"]["name"])) {
  $newName = uniqid() . '.' . end($name);
} else {
  $newName = end($name);
}

上述代码中使用了`uniqid`函数来生成唯一的文件名,确保每个文件都有一个唯一的标识符。

如果仍然出现重名的情况,可以再次生成一个新的文件名。

if (file_exists("../img/imageDirectory/" . $newName)) {
  $newName = uniqid() . '.' . end($name);
}

在代码中检查是否拼写正确,以确保代码的正确性。

以上是解决照片上传避免覆盖问题的方法。通过给文件添加随机数字或唯一标识符作为文件名,可以确保每次上传的文件都具有唯一的名称,避免文件被覆盖。

0