Ajay Singh Ответов: 1

Загрузка нескольких изображений


Я пытаюсь загрузить несколько изображений, но получаю ошибку "не удалось загрузить изображение"

помогите мне как можно скорее

Что я уже пробовал:

<?php
include('../pages/connect.php');
require_once('../doctorlogin/resize_image.php');

class Upload {
  
    function __construct() {

    }

  function upload_img(){
    if(isset($_POST['submit'])){
      global $mysqli;
      $msg = '';  
      $max_upload_size = (int)(ini_get('upload_max_filesize'));
      if (count($_FILES["img_files"]) > 0) {
        $folderName = "uploads/";

        for ($i = 0; $i < count($_FILES["img_files"]["name"]); $i++) {
          $file_name = $_FILES["img_files"]["name"][$i];
          $file_type = $_FILES["img_files"]["type"][$i];
          $file_size = $_FILES["img_files"]["size"][$i];
          if( isset($file_name) && $file_name != "") {
            //if($this->file_size($file_size, $max_upload_size)){
              if($this->file_extension($file_type)){
                $filename = time() . '_' . $file_name;
                $filepath = $folderName . $filename;
                if (!move_uploaded_file($_FILES["img_files"]["tmp_name"][$i], $filepath)) {
                  $msg .= "<p class='msg_error'>Failed to upload " . $filename . ".</p>";
                } else {
                  $sql = "INSERT INTO upload_img (img_name) VALUES ('$file_name') ";
                  $result = $mysqli->query($sql);
                  $msg .= "<p class='msg_success'>" . $filename . " uploaded successfully.</p>";

                  $magicianObj = new imageLib($filepath);
                  $magicianObj->resizeImage(100, 100);
                  $magicianObj->saveImage($folderName . 'thumb/' . $filename, 100);
                }
              }else{
                $msg .= "<p class='msg_error'>Sorry, only JPG, JPEG, PNG & GIF files are allowed.</p>";
              }
            //}else{
            //  $msg .= "<p class='msg_error'>Uploaded image size is too large, please upload image less then ".intval($max_upload_size)."Mb.</p>";
            //}
          }
        }
      } else {
        $msg .= "<p class='msg_error'>Please upload atleast one image file.</p>";
      }
    }
    return $msg;
  }

  function file_extension($filetype,$type=array()){
    $ext_arr = array( 'jpg' => 'image/jpeg',
                       'png' => 'image/png',
                       'gif' => 'image/gif'
                       );
    if(!empty($type)){
        $ext_arr = array_merge($ext_arr,$type);
    }
    $return =false;
    // Allow certain file formats
    if(array_search($filetype, $ext_arr)) {
        $return =true;
    }
    return $return;
  }

  function file_size($filesize, $max_upload_size){
      // Check file size
      $return = false;
      if ($filesize < $max_upload_size*1000000) {
        $return = true;
      }
      return $return;
    }

}


Получение ошибки не удалось загрузить

Richard MacCutchan

Вам нужно сделать некоторую отладку, чтобы выяснить, что вызывает сбой.

1 Ответов

Рейтинг:
0

Jochen Arndt

Сначала вы должны проверить наличие ошибок и сообщить о них, чтобы узнать, что произошло:

$file_err = $_FILES["img_files"]["error"][$i];
if($file_err != UPLOAD_ERR_OK){
    $msg .= "File upload failed. Code " . $_FILES["img_files"]["error"][$i];
}
Смотреть также PHP: обработка загрузки файлов-руководство пользователя[^].

Если move_uploaded_file() сбой даже при отсутствии ошибки загрузки выдается предупреждение. Поскольку вы не получили такого предупреждения, похоже, что загрузка файла не была успешной.

В противном случае проверьте имя файла назначения:
Существует ли каталог, имеет ли скрипт (учетная запись, запускающая веб-сервер) доступ на запись в каталог и является ли он $filename допустимое имя файла (не содержит зарезервированных символов)?
Заметим также, что $folderName при использовании здесь должна быть косая черта:
$filepath = $folderName . $filename;