Загрузка нескольких файлов с НЕСКОЛЬКИМИ входами - PullRequest
0 голосов
/ 21 февраля 2019

Я создаю шаблон электронной почты, который позволяет мне вводить контент, который затем помещается в шаблон электронной почты html.Часть формы позволяет добавлять новые разделы.Каждый раздел имеет вход для загрузки, который позволяет пользователям добавлять миниатюру изображения в этот раздел.Я изо всех сил пытаюсь выяснить, как отправить несколько изображений в одной форме, которые поступают с нескольких входов (а не просто установить один вход на «несколько»).

Вот HTML

<div class="row">
        <div id="example1" class="list-group col">
          <div class="list-group-item article">
            <h4>Article Heading:</h4>
            <input type="text" name="ArticleHeading[]" 
    placeholder="Type your heading" />
            <h4>Article Subheading:</h4>
            <input type="text" name="ArticleHeading[]" 
    placeholder="Type your subheading"/>
            <h4>Thumbnail Image:</h4>
            <input type="file" name="fileToUpload" 
   id="fileToUpload">
          </div>
        </div>
      </div>

Вот PHP:

//IMAGE UPLOADING
    $target_dir = "uploads/";
    $target_file = $target_dir . 
    basename($_FILES["fileToUpload"]["name"]);
    $uploadOk = 1;
    $imageFileType = 
    strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    // Check if image file is a actual image or fake image
    if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"] 
   ["tmp_name"]);
    if($check !== false) {
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
     }
     }
     // Check if file already exists
     if (file_exists($target_file)) {
     echo "Sorry, file already exists.";
     $uploadOk = 0;
     }
     // // Check file size
     // if ($_FILES["fileToUpload"]["size"] > 500000) {
     //     echo "Sorry, your file is too large.";
     //     $uploadOk = 0;
     // }
     // Allow certain file formats
     if($imageFileType != "jpg" && $imageFileType != "png" 
      && $imageFileType != "jpeg"
     && $imageFileType != "gif" ) {
     echo "Sorry, only JPG, JPEG, PNG & GIF files are 
     allowed.";
     $uploadOk = 0;
     }
     // Check if $uploadOk is set to 0 by an error
     if ($uploadOk == 0) {
     echo "Sorry, your file was not uploaded.";
     // if everything is ok, try to upload file
     } else {
     if (move_uploaded_file($_FILES["fileToUpload"] 
     ["tmp_name"], $target_file)) {
     } else {
         echo "Sorry, there was an error uploading your 
     file.";
     }
     }
     $thumbnailPath = "uploads/".$_FILES["fileToUpload"] 
     ["name"];
     //END IMAGE UPLOADING

Я попытался назвать имя файла file name = "file []", а затем использовать массив для загрузки каждого файла, но он каждый раз выдавал ошибку ... не уверен, чтоеще сделать.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Я понял, что все делал правильно, установив имя для массива изображений.Мне нужно было создать цикл for (), который затем проходил по массиву и назначал каждому пути к файлу другой массив.Затем я присвоил каждому значению в этом массиве тег.

Вот HTML-код:

            <input type="file" name="upload[]" 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']);
echo $total."<br>";
$newArray = array();

// 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 = "uploads/" . $_FILES['upload']['name'][$i];

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

    }
  }
}
0 голосов
/ 21 февраля 2019

Добавьте attritube enctype="multipart/form-data" к вашей форме.

См. эту тему для получения дополнительной информации.

...