Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка нескольких фотографий
 
 автор: Sarat   (12.08.2014 в 14:32)   письмо автору
 
 

Здравствуйте уважаемые знатоки! Помогите разобраться.
Нужно, чтобы фотографии, отправленные с формы ниже обрабатывались сразу несколько при нажатии кнопки формы отправить.

<form  method='post' action='action.php' enctype='multipart/form-data'>
<label>Загрузка фотографий (не более 5-ти фото)<br>                   

<input type='file' name='photo1' id='file'><br>
<input type='file' name='photo2' id='file'><br>
<input type='file' name='photo3' id='file'><br>
<input type='file' name='photo4' id='file'><br>
<input type='file' name='photo5' id='file'><br>
</label>
<label><input type='submit' name='submit' value='Отправить'></label>
</form>    


Файл-обработчик я написал, но он обрабатывает только одну фотографию, это и понятно.
Как сделать, чтобы обрабатывались все или несколько фотографий

if (empty($_FILES['photo1']['name']))
{
//если переменной не существует (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет фото"
$photo1 = "photos/net-photo.png"; 
}
else 
{
//иначе - загружаем изображение пользователя
$directory = 'photos/';
//папка, куда будет загружаться начальная картинка и ее сжатая копия
$max_filesize = 1048576;    
//присваиваем переменной максимальное значение

if (filesize($_FILES['photo1']['tmp_name']) > $max_filesize) 
exit ("<h2>Исходный файл превышает 1 Мб</h2><HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='8; URL=anketa.php?4'><input name='back' class='sub_vote' type='button' value='Вернуться назад'  onclick='javascript:self.back();'></HEAD></HTML>"); 

if (!filesize($_FILES['photo1']['tmp_name'])) exit ("<h2>Исходный файл превышает 1 Мб, либо вы пытаетесь загрузить посторонний файл.</h2><HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='8; URL=anketa.php?4'><input name='back' class='sub_vote' type='button' value='Вернуться назад'  onclick='javascript:self.back();'></HEAD></HTML>"); 

//проверка формата исходного изображения и размера. 
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['photo1']['name'])) 
     {         
        $original = $_FILES['photo1']['name'];
        $istochnik = $_FILES['photo1']['tmp_name'];    
        $target = $directory . $original;
        move_uploaded_file($istochnik, $target);
        //загрузка оригинала в папку $directory

         if(preg_match('/[.](GIF)|(gif)$/', $original)) 
         {$rezultat_ne_obrezanniy = imagecreatefromgif($directory.$original) ;}
         //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    
         if(preg_match('/[.](PNG)|(png)$/', $original)) 
         {$rezultat_ne_obrezanniy = imagecreatefrompng($directory.$original) ;}
         //если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия
        
         if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $original)) 
         {$rezultat_ne_obrezanniy = imagecreatefromjpeg($directory.$original); }
         //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия
    
//ОБРЕЗАНИЕ И СЖАТИЕ фото
$w = 600; $h = 700; //присваиваем макс значения ширины и высоты

// создаём исходное изображение на основе исходного файла и определяем его размеры 
$w_src = imagesx($rezultat_ne_obrezanniy); //вычисляем ширину
$h_src = imagesy($rezultat_ne_obrezanniy); //вычисляем высоту изображения 
 
$koaf=$w/$h;//коэфициент сжатия уменьшенной копии
$src_koaf=$w_src/$h_src;//коэфициент сжатия оригинала
if(($w_src<$w)&&($h_src<$h)) //если оригинал меньше исходного изображения
{
$delfile = $directory.$original; //присваиваем переменной путь до оригинала
unlink ($delfile);  //удаляем оригинал загруженного изображения
 echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='8; URL=anketa.php?4'><h2>Исходное изображение слишком маленькое, загрузите картинку чуть больше.</h2><input name='back' class='sub_vote' type='button' value='Вернуться назад'  onclick='javascript:self.back();'></HEAD></HTML>"; return true;
}
if($koaf<$src_koaf) $h=$w/$src_koaf;
else $w=$h*$src_koaf; 
       
         $rezultat = imagecreatetruecolor($w,$h); // создаём пустую пропорциональную картинку 

         imagecopyresampled($rezultat, $rezultat_ne_obrezanniy, 0, 0, 0, 0, $w, $h, $w_src, $h_src); 
 
$date=date('Y-m-d_H-i-s'); //вычисляем дату и время вплоть до секунд для названия аватара

imagejpeg($rezultat, $directory.$date.".jpg"); //сохраняем изображение

$photo1 = $directory.$date.".jpg";

$delfile = $directory.$original; //присваиваем переменной путь до оригинала
unlink ($delfile);  //удаляем оригинал загруженного изображения

   }
     
else 
{
//в случае несоответствия формата, выдаем соответствующее сообщение
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='8; URL=anketa.php?4'></HEAD></HTML>";
exit ("<h2>Будте внимательны, изображение должно иметь форматы JPG,GIF или PNG</h2><input name='back' class='sub_vote' type='button' value='Вернуться назад'  onclick='javascript:self.back();'>"); //останавливаем выполнение сценариев

}

}

include ("bd.php");

$result4 = mysql_query ("UPDATE data SET photo1='$photo1' WHERE id_session='$id_session'"); //запись в БД 

header('Location: anketa.php?4&konec');

  Ответить  
 
 автор: confirm   (12.08.2014 в 14:51)   письмо автору
 
   для: Sarat   (12.08.2014 в 14:32)
 

<input type='file' name='photo1'><br>
<input type='file' name='photo2'><br>
<input type='file' name='photo3'><br>
<input type='file' name='photo4'><br>
<input type='file' name='photo5'><br>


Label у вас тоже не к месту, подумайте сами почему? Атрибут ID, это уникальный идентификатор, и никак не может быть одним и тем же у нескольких элементов как это у вас - id='file'.

<input type='file' name='photo[]'><br> 
<input type='file' name='photo[]'><br> 
..... 
<input type='file' name='photo[]'><br>


И обрабатывайте в цикле массив $_FILES.

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $original)) - в помойку, ибо под таким разрешением можно выслать что угодно. Уж лучше getimagesize().

Обрамляя код вв-тегом code, дополняйте и РНР-тегами его, читать же невозможно такой код.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования