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

Форум PHP

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

 

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

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

тема: Загрузка нескольких файлов с ресайзом
 
 автор: unnamed   (27.04.2008 в 20:40)   письмо автору
 
 

Долго ломал голову, есть код из галереи на сайте, все работает на ура, но никак не могу связать его с циклом, что бы загружать несколько файлов, одновременно делать ресайз и записывать все это в базу.
Может есть у кого готовый скриптик? :) или объясните пожайлуста как это связать.

   
 
 автор: Valick   (28.04.2008 в 09:41)   письмо автору
 
   для: unnamed   (27.04.2008 в 20:40)
 

одновременно делать ресайз и записывать все это в базу

Одновременно неполучится, поочерёдно (последовательно, друг за другом и т.д.)

Из формы необходимо передавать имена загружаемых файлов массивом т.е. если было
<input type="file" name="filename">

то сделать:

<input type="file" name="filename[]">
<input type="file" name="filename[]">
<input type="file" name="filename[]">

В обработчике просто обходите массив с помощью foreach т.е. ресайз и сохранение одного файла выполняете в цикле.

В разделе по ЯваСкрипт можно поискать код добавления полей для ввода (файлов) количество которых заранее неизвестно.

   
 
 автор: unnamed   (29.04.2008 в 20:08)   письмо автору
 
   для: Valick   (28.04.2008 в 09:41)
 

Это все понятно что через цикл, Ява скрипт тоже у меня есть, я просто хотел связать скрипт ресайза, который выложен в разделе скрипты, т.е. там выложена галлерея, я вырезал от туда код загрузки и ресайза.
Там есть такая функция resizeimg(); Вот как бы ее в цикл пихнуть - этого я не пойму.

   
 
 автор: sim5   (30.04.2008 в 03:50)   письмо автору
 
   для: unnamed   (29.04.2008 в 20:08)
 

Не знаю какой скрипт ресайза у вас, но просто для примера. Все просто - вы должны получать закачанное на сервер изображение (в примере это $_FILES['fl']['tmp_name']) с идексом цикла, изменять его размер и помещать полученное в нужный каталог с нужным вам именем:

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="fl[]">
<input type="file" name="fl[]">
<input name="send" type="submit" value="Send">
</form>
<?php
function resize($source$dist$pr) {
    
// получим размеры исходного изображения  
    
$size_img getimagesize($source);
    
$ws $size_img[0]; //ширина
    
$hs $size_img[1]; //высота
    //получаем уменьшенные размеры выходного изображения
    
$w round(($ws $pr)/100); //ширина
    
$h round(($hs $pr)/100); //высота
    //создаем изображение по заданным размерам   
    
$new_img imagecreatetruecolor($w$h);      
    
//создаем изображение в зависимости от расширения исходного
    
switch ($size_img['mime']) {  
        case 
'image/jpeg':  
            
$src_img imagecreatefromjpeg($source);
            break;
        case 
'image/png':  
            
$src_img imagecreatefrompng($source);
            break;
        case 
'image/gif':
            
$src_img imagecreatefromgif($source);
    }  
    
//ресайз
    
imagecopyresampled($new_img$src_img0000$w$h$ws$hs);
    
//сохраняем в файл по расширению и заданному имени  
    
switch ($size_img['mime']) {  
        case 
'image/jpeg':  
            
imagejpeg($new_img$dist.'.jpg');          
            break;  
        case 
'image/png':  
            
imagepng($new_img$dist.'.png');          
            break;  
        case 
'image/gif':      
            
imagegif($new_img$dist.'.gif');          
    }          
    
imagedestroy($new_img);
    
imagedestroy($src_img);
}
//указываем путь сохранения файлов
$path 'images/';
for (
$i=0$i<count($_FILES['fl']['name']); $i++) {
  if (
is_uploaded_file($_FILES['fl']['tmp_name'][$i])) {
    
//проверяем загружаемое изображение на доступность размера,
    //расширения, и если все ОК, делаем ресайз,
    //передавая в функцию изображение из папки /tmp,
    //путь и имя файла для сохранения, процент уменьшения.
    
resize($_FILES['fl']['tmp_name'][$i], $path.'image_'.$i30);
    
//здесь же сохраняем загруженное исходное изображение
  
} else //ошибка загрузки изображения
}
?>

   
 
 автор: unnamed   (30.04.2008 в 20:39)   письмо автору
 
   для: sim5   (30.04.2008 в 03:50)
 

Во, спасибо теперь вроде понятно, позже попробую под свой переделать, спасибо огромное

   
Rambler's Top100
вверх

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