Загрузка нескольких изображений PHP, загрузка только первого выбранного изображения - PullRequest
0 голосов
/ 08 мая 2019

Я установил форму загрузки нескольких файлов.Однако когда я выбираю несколько изображений и нажимаю кнопку «загрузить», загружаются только первые изображения, а не массив изображений?Приветствия.

<?php
// Check if the form was submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){
    // Check if file was uploaded without errors
    if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
        $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
        $filename = $_FILES["photo"]["name"];
        $filetype = $_FILES["photo"]["type"];
        $filesize = $_FILES["photo"]["size"];

        // Verify file extension
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if(!array_key_exists($ext, $allowed)) die("Error: Please select a valid file format.");

        // Verify file size - 20MB maximum
        $maxsize = 20 * 1024 * 1024;
        if($filesize > $maxsize) die("Error: File size is larger than the allowed limit.");

        // Verify MYME type of the file
        if(in_array($filetype, $allowed)){
            // Check whether file exists before uploading it
            if(file_exists("upload/" . $filename)){
                echo $filename . " is already exists.";
            } else{
                move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $filename);
                echo "Your file was uploaded successfully.";
            } 
        } else{
            echo "Error: There was a problem uploading your file. Please try again."; 
        }
    } else{
        echo "Error: " . $_FILES["photo"]["error"];
    }
} ?>

Ответы [ 2 ]

5 голосов
/ 08 мая 2019

Вот что вам нужно сделать:

  • Входное имя должно быть определено как массив, т.е. name = "inputName []"
  • Элемент ввода должен иметь несколько = "несколько" или просто несколько
  • В вашем PHP-файле используйте синтаксис "$ _FILES ['inputName'] ['param'] [index]"
  • Обязательно ищите пустые имена файлов и пути, массив может содержать пустые строки. Используйте array_filter () перед подсчетом.
  • Вот простой и грязный пример (показывает только соответствующий код)

HTML:

<input name="upload[]" type="file" multiple="multiple" />

PHP:

//$files = array_filter($_FILES['upload']['name']); //something like that to be used before processing files.

// Count # of uploaded files in array
$total = count($_FILES['upload']['name']);

// Loop through each file
for( $i=0 ; $i < $total ; $i++ ) {
    //Get the temp file path
    $tmpFilePath = $_FILES['upload']['tmp_name'][$i];

    //Make sure we have a file path
    if ($tmpFilePath != ""){
        //Setup our new file path
        $newFilePath = "./uploadFiles/" . $_FILES['upload']['name'][$i];

        //Upload the file into the temp dir
        if(move_uploaded_file($tmpFilePath, $newFilePath)) {

          //Handle other code here

        }
    }
}

Надеюсь, это поможет!

1 голос
/ 08 мая 2019

Я внес некоторые изменения в ваш код, используйте его. Может помочь вам, а также, пожалуйста, отметьте

<input type="file" multiple>



  if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
    $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
    $countfiles = count($_FILES['photo']['name']);
    for($i=0;$i<$countfiles;$i++){
        $filename = $_FILES["photo"]["name"][$i];
        $filetype = $_FILES["photo"]["type"][$i];
        $filesize = $_FILES["photo"]["size"][$i];

        // Verify file extension
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if(!array_key_exists($ext, $allowed)) die("Error: Please select a valid file format.");

       // Verify file size - 20MB maximum
       $maxsize = 20 * 1024 * 1024;
       if($filesize > $maxsize) die("Error: File size is larger than the allowed limit.");

       // Verify MYME type of the file
       if(in_array($filetype, $allowed)){
        // Check whether file exists before uploading it
        if(file_exists("upload/" . $filename)){
            echo $filename . " is already exists.";
        } else{
            move_uploaded_file($_FILES["photo"]["tmp_name"][$i], "upload/" . $filename);
            echo "Your file was uploaded successfully.";
        } 
    } else{
        echo "Error: There was a problem uploading your file. Please try again."; 
    }
  }
} else{
    echo "Error: " . $_FILES["photo"]["error"];
}

}?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...