PHP覆盖上载的图像

PHP覆盖上载的图像,php,file-upload,Php,File Upload,我在谷歌上搜索一些文件上传代码 现在的问题是当我尝试上传图像,如果它已经在文件夹中,那么它的过度写入和问题就来了。我尝试了来自的代码,但遇到了一些错误 这是我的密码。在这段代码中,我可以用一些额外的名称来停止对现有文件的写入吗 if(isset($_REQUEST['main'])) { $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"

我在谷歌上搜索一些文件上传代码

现在的问题是当我尝试上传图像,如果它已经在文件夹中,那么它的过度写入和问题就来了。我尝试了来自的代码,但遇到了一些错误

这是我的密码。在这段代码中,我可以用一些额外的名称来停止对现有文件的写入吗

if(isset($_REQUEST['main']))
{

    $allowedExts = array("gif", "jpeg", "jpg", "png");
      $temp = explode(".", $_FILES["file"]["name"]);
      $extension = end($temp);

      /*if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts))  {*/

        if ($_FILES["file"]["error"] > 0) {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        } else {

            if (file_exists("upload/" . $_FILES["file"]["name"])) {
                echo $_FILES["file"]["name"] . " already exists. ";
            } else {
                if( move_uploaded_file($_FILES["file"]["tmp_name"], "../img/catalog/" . $_FILES["file"]["name"]) ){
                    $filepath = "img/catalog/" . $_FILES["file"]["name"];
                }else{
                    echo $_FILES["file"]["name"]." unable to store";
                }
            }
        /*}
      } else {
        echo "Invalid file";
      }*/
}
    $main = $_REQUEST['main'];
    $sql="INSERT INTO image VALUES ('', '$filepath', '$main')";

    if (!mysqli_query($con,$sql)) {
      die('Error: ' . mysqli_error($con));
    }
    echo "1 record added";
}
if(isset($\u请求['main']))
{
$allowedExts=数组(“gif”、“jpeg”、“jpg”、“png”);
$temp=explode(“.”,$_文件[“文件”][“名称”]);
$extension=end($temp);
/*(如果)如果(如果)文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件文件20000)和&in_阵列($extension,$allowedExts))  {*/
如果($\u文件[“文件”][“错误”]>0){
回显“返回代码:”.$\u文件[“文件”][“错误”]。
”; }否则{ 如果(文件存在(“上载/”$\u文件[“文件”][“名称”])){ echo$\u文件[“文件”][“名称”]。“已存在。”; }否则{ 如果(移动上传的文件($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\{ $filepath=“img/catalog/”$\u文件[“文件”][“名称”]; }否则{ echo$\u文件[“文件”][“名称”]“无法存储”; } } /*} }否则{ 回显“无效文件”; }*/ } $main=$_请求['main']; $sql=“插入图像值(“”,$filepath’,“$main”)”; 如果(!mysqli_query($con,$sql)){ die('Error:'.mysqli_Error($con)); } echo“添加1条记录”; }
您可以使用检查文件是否存在

如果存在,请在文件名中添加一些额外字符。然后你可以保存它

下面是一个生成随机字符的函数:

function randomString($length) {
 $str="";
 $chars = "subinsblogabcdefghijklmanopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
 $size = strlen($chars);
 for($i = 0;$i < $length;$i++) {
  $str .= $chars[rand(0,$size-1)];
 }
 return $str;
}
与:

$newLocation = "../img/catalog/" . $_FILES["file"]["name"];
if(file_exists($newLocation)){
   $newLocation .= randomString(10); // We append 10 new characters
}

if( move_uploaded_file($_FILES["file"]["tmp_name"], $newLocation) ){
   $filepath = str_replace("../img", "img", $newLocation); // make File Path starting with img/
}else{
   echo $_FILES["file"]["name"]." unable to store";
}

上面的代码将检查文件是否存在。如果是,则会在文件名后附加一个由10个随机字符组成的字符串,并将其存储在目标文件夹中。

您没有提到您的问题,但我认为您遗漏了问题中的一点

否则

部分。这样写:

   if (file_exists("upload/" . $_FILES["file"]["name"])) {
            echo $_FILES["file"]["name"] . " already exists. ";
$_FILES["file"]["name"] = $_FILES["file"]["name"].$your_new_number;
            }
                if( move_uploaded_file($_FILES["file"]["tmp_name"], "../img/catalog/" . $_FILES["file"]["name"]) ){
                    $filepath = "img/catalog/" . $_FILES["file"]["name"];
                }else{
                    echo $_FILES["file"]["name"]." unable to store";
                }
            }
   if (file_exists("upload/" . $_FILES["file"]["name"])) {
            echo $_FILES["file"]["name"] . " already exists. ";
$_FILES["file"]["name"] = $_FILES["file"]["name"].$your_new_number;
            }
                if( move_uploaded_file($_FILES["file"]["tmp_name"], "../img/catalog/" . $_FILES["file"]["name"]) ){
                    $filepath = "img/catalog/" . $_FILES["file"]["name"];
                }else{
                    echo $_FILES["file"]["name"]." unable to store";
                }
            }