Новичок
Покинул форум
Сообщений всего: 38
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
|
Здравствуйте! есть такая проблема - написал скрипт загрузки нескольких файлов на сервер, вроде все работает, но никак не получается правильно проверить вес и тип файла. Привожу скрипт, в котором пока есть только проверка на вес ( если более 64 Кб то изображение не загружается). Работает корректно, если загрузить один, превышающий по весу файл - ничего не грузится, выдается сообщение об ошибке ( Файл не загружен, так как вес превышает бла-бла-бла)
Но, если, например, загрузить несколько файлов, из которых только один превышает разрешенный размер, то не грузятся ВСЕ ФАЙЛЫ.
Вот код обработчика
PHP:
скопировать код в буфер обмена
<?PHP $db_host = 'localhost'; $db_user = 'loader'; $db_pass = '12345'; $db_name = 'loader'; if(isset($_FILES['fileToUpload'])) { $max_image_size = 64 * 1024; $files_count = count($_FILES['fileToUpload']["name"]); for ($i = 0; $i < $files_count; $i++) { $img_params =@getimagesize($_FILES['fileToUpload']['tmp_name'][$i]); switch ($img_params[2]) { case '1': $rash = 'gif'; break; case '3': $rash = 'png'; break; case '2': $rash = 'jpg'; break; } $loc = 'uploads/'; $upl_path = 'uploads/prod/'; $thumb_path = 'uploads/prod/thumb/'; $source = $_FILES['fileToUpload']['tmp_name'][$i]; $type = $_FILES['fileToUpload']['type'][$i]; $target = $upl_path. $_FILES['fileToUpload']['name'][$i]; if (filesize($source) > $max_image_size) { echo 'Ошибка загрузки файла '.$_FILES['fileToUpload']['name'][$i].' его размер больше, чем 64K.<br />'; } ///resize big $rb_name_new[] = uniqid() . '.' . $rash; $res_src = $upl_path.$rb_name_new[$i]; //получаем параметры загруженного файла switch($rb_params[2]){ } //если ширина меньше 640 и высота меньше 480 //оставляем оригинальные размеры if(($rb_params[0]<=640) && ($rb_params[1]<=480)){ $rb_newwidth = $rb_params[0]; $rb_newheight = $rb_params[1]; } //иначе - начинаем урезать пропорционально else { //если высота равна ширине //вычисляем новую ширину if($rb_params[1]==$rb_params[0]){ $rb_newheight=640; $rb_newwidth=floor($rb_newheight*$rb_params[0 ]/$rb_params[1 ]); } //если ширина равна высоте //вычисляем новую высоту if($rb_params[1]==$rb_params[0]){ $rb_newwidth=640; $rb_newheight=floor($rb_newwidth*$rb_params[1 ]/$rb_params[0 ]); } //если высота больше ширины //вычисляем новую ширину if($rb_params[1]>$rb_params[0]){ $rb_newheight=480; $rb_newwidth=floor($rb_newheight*$rb_params[0 ]/$rb_params[1 ]); } //если ширина больше высоты //вычисляем новую высоту if($rb_params[1]<$rb_params[0]){ $rb_newwidth=640; $rb_newheight=floor($rb_newwidth*$rb_params[1 ]/$rb_params[0 ]); } } //создаем урезку загруженного изображения imagecopyresampled($rb_resource,$rb_source,0 ,0 ,0 ,0 ,$rb_newwidth,$rb_newheight,$rb_params[0 ],$rb_params[1 ]); imagettftext($rb_resource, 16 , 0 , 5 , 30 , $white, $loc."MTCORSVA.TTF", "WWW.LUCKY-REALTY.RU"); switch($rb_params[2]){ case 1 :imagegif($rb_resource,$res_src,70 );break ; case 2 :imagejpeg($rb_resource,$res_src,70 );break ; case 3 :imagepng($rb_resource,$res_src);break ; } ///end resize big $new_name = 't'. $rb_name_new[$i]; $resource_src = $thumb_path.$new_name; //получаем параметры загруженного файла switch($params[2]){ } //если высота равна ширине //вычисляем новую ширину if($params[1]==$params[0]){ $newheight=70; $newwidth=floor($newheight*$params[0 ]/$params[1 ]); } //если ширина равна высоте //вычисляем новую высоту if($params[1]==$params[0]){ $newwidth=70; $newheight=floor($newwidth*$params[1 ]/$params[0 ]); } //если высота больше ширины //вычисляем новую ширину if($params[1]>$params[0]){ $newheight=70; $newwidth=floor($newheight*$params[0 ]/$params[1 ]); } //если ширина больше высоты //вычисляем новую высоту if($params[1]<$params[0]){ $newwidth=70; $newheight=floor($newwidth*$params[1 ]/$params[0 ]); } //создаем миниатюру загруженного изображения $newwidth,$newheight,$params[0],$params[1]); imagejpeg($resource,$resource_src,80 );//80 качество изображения //удаляем оригинал картинки } } $r = mysql_query ("INSERT INTO users SET file0='".$rb_name_new[0]."', file1='".$rb_name_new[1]."', file2='".$rb_name_new[2]."', file3='".$rb_name_new[3]."', file4='".$rb_name_new[4]."'"); } ?>
Если не трудно, подскажите как правильно сделать проверку на вес и тип файла. Желательно листинг, потому как я вроде уже все перепробовал, все функции, а корректно не получается.
Заранее спасибо!
|