[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Мультизагрузка изображений на сервер
Arat_Kiev
Помогите, пожалуйста разобраться.
Дано:
Форма с инпутом для загрузки файлов (multiple).

<form method="post" action="add_photo.php" enctype='multipart/form-data' id="addproject">
      <input type="file" name="userfile[]" id="userfile" multiple="true" />
</form>



Скрипт обработки:


foreach ($_FILES["userfile"]["name"] as $image) {

    //Запрос в базу для определения конкретного проекта для добавления фото
      $projects_query = mysql_query("SELECT * FROM projects WHERE id='$id'", $db);
      $projects_array = mysql_fetch_array($projects_query);
      $project_id = $projects_array["id"];
      $name = $projects_array["name"];
      //Загрузка изображения на сервер
      $upload_dir = "../../../images/portfolio/photo/".$name."/";
      $uploader = new Upload();
      $uploader->upload_file($_FILES["userfile"], $upload_dir,"jpg,png,gif,bmp,JPG,PNG,GIF,BMP");
      $path = $upload_dir.$image;
      //Перемещение изображения
      $upload = $upload_dir.$name."_".$image;
      $processor = new Image();
      $processor->resize($path, $upload, 900, false);
      $uploaded_img = "images/portfolio/photo/".$name."/".$name."_".$image;
      unlink($path);

      $photo_album = mysql_query ("INSERT INTO photos (project_id, photo) values ('$project_id', '$uploaded_img')", $db);
      }


Задача:
заставить загружать изображения на сервак. Имена изображений в базу попадают, сами изображения - нет.
При загрузке одного изображения код работает, при конструкции foreach() и попытке мультизагрузки - проблема :(

ПыСы: код класса загрузки изображения


class Upload{
  protected static $upload_errors = array(
    UPLOAD_ERR_OK    => "Нет ошибок",
    UPLOAD_ERR_INI_SIZE  => "Larger than upload_max_filesize.",
    UPLOAD_ERR_FORM_SIZE  => "Larger than form MAX_FILE_SIZE.",
    UPLOAD_ERR_PARTIAL  => "Файл частично поврежден",
    UPLOAD_ERR_NO_FILE    => "Файл не выбран!",
    UPLOAD_ERR_NO_TMP_DIR => "Отсутствует временная директория",
    UPLOAD_ERR_CANT_WRITE => "Файл не может быть записан в директории",
    UPLOAD_ERR_EXTENSION  => "File upload stopped by extension."
    );
  public $filename;
  protected $type;
  protected $size;
  protected $temp_path;
  public $errors=array();
  public function upload_file($file, $target_path, $ext=',', $rewrite=TRUE){
    if(empty($file) || empty($target_path)){
      $this->errors[]="Не передан файл, или не указана директория загрузки";
      return false;
    }
    if($this->attach_file($file, $ext) && $this->save_file($target_path,$rewrite)){
      return true;
    }else{
      return false;
    }
  }
  private function attach_file($file, $ext=","){
    $ext=str_replace(" ","",$ext);
    $extensions=explode(",",$ext);
    if(!$file || empty($file) || !is_array($file)){
      $this->errors[]="Файл не был загружен";
      return false;
    } elseif($file['error']!=0){
      $this->errors[]=self::$upload_errors[$file['error']];
      return false;
    } elseif(!in_array(self::getExtension(basename($file['name'])),$extensions)){
      $this->errors[]="Не верный тип файла";
      return false;
    }else{
      $this->temp_path = $file['tmp_name'];
      $this->filename  = basename($file['name']);
      $this->type      = $file['type'];
      $this->size      = $file['size'];
      return true;
    }
  }
  private function save_file($target_path, $rewrite=TRUE){
    if(!empty($this->errors)){
      return false;
    }
    if(empty($this->filename) || empty($this->temp_path)){
      $this->errors[]="Файл не доступен для чтения";
      return false;
    }
    $target=$target_path."/".$this->filename;
    if($rewrite==FALSE && file_exists($target)){
      $this->errors[]="Файл с таким именем уже существует";
      return false;
    }else{
      if(move_uploaded_file($this->temp_path, $target)){
        return true;
      } else{
        $this->errors[]="Ошибка записи файла, возможно директория не доступна для записи";
        return false;
      }
    }
  }
  private static function getExtension($filename) {
    return substr(strrchr($filename, '.'), 1);
  }
}



В программировании новичек... кедами не пинайте, пожалуйста! :D
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.