Дано:
Форма с инпутом для загрузки файлов (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