@Jony1337

Как загрузить больше картинок через этот php код?

Привет всем , может вопрос туповат но простите сразу я ещё учусь.

<?php
// Максимально допустимый размер загружаемого файла - 5Мб
$MaxFileSizeInBytes = 5242880;
// Разрешение расширения файлов для загрузки
$AllowFileExtension = array('jpg', 'png', 'jpeg');
// Оригинальное название файла
$FileName = $_FILES['uploaded_file']['name'];
// Полный путь до временного файла
$TempName = $_FILES['uploaded_file']['tmp_name'];
// Папка где будут загружатся файлы
$UploadDir = "img-for-battles/";
// Полный путь к новому файлу в папке сервера
$NewFilePatch = $UploadDir.$FileName;
if($FileName) {
    // Проверка если расширение файла находится в массиве доступных
    $FileExtension = pathinfo($FileName, PATHINFO_EXTENSION);
    if(!in_array($FileExtension, $AllowFileExtension)) {
        $errors= "Файлы с расширением {$FileExtension} не допускаются";
    }
     else {
         // Проверка размера файла
         if(filesize($TempName) > $MaxFileSizeInBytes) {
             $errors= "Размер загружаемого файла превышает 5МБ";
         }
          else {
              // Проверяем права доступа на папку
              if(!is_writable($UploadDir)) {
                  $errors= "Папка ".$UploadDir." не имеет прав на запись";
              }
               else {
                   // Копируем содержимое временного файла $TempName и создаем нового в папке сервера
                   $CopyFile = copy($TempName, $NewFilePatch);
                   if(!$CopyFile) {
                      $errors= "Возникла ошибка, файл не удалось загрузить!";
                   }
                    else {
                        $good = "Файл успешно загружен!<br />Ссылка на файл: <a href='{$NewFilePatch}'>{$NewFilePatch}</a>";
                    }
               }
          }
     }
}

?>

вот и сам html код загрузки
<form action = "loading.php" method = "post" enctype = 'multipart/form-data'>
  <input type = "file" name = "uploaded_file" />
    <input type = "file" name = "uploaded_file2" />
  <input type = "submit" value = "Upload!!!" />
</form>

как загрузить 2 картинки а использовать вышеуказанный php код который предназначен для одного .
  • Вопрос задан
  • 312 просмотров
Пригласить эксперта
Ответы на вопрос 2
luckyluck
@luckyluck
веб-разработчик
Для начала нужно инпуту с типом файл прописать атрибут multiple:
<input type="file" name="photo" multiple>
чтобы появилась возможность выбирать два файла.
А потом, если я не ошибаюсь (давно не писал на PHP), в $_FILES['uploaded_file']['name'] будет приходить уже массив файлов, который нужно будет записывать через for.
Ответ написан
Комментировать
arkadiy_90
@arkadiy_90
Сижу дома с мелким, работаю за компом.
Я использую этот код
Тут еще пример как в базу-данных пути сохранять
$id - например id товара или галлереи
if($_FILES['photos']['name'][0]){
                for($i = 0; $i < count($_FILES['photos']['name']); $i++){
                    $error = "";
                    if($_FILES['photos']['name'][$i]){
                        // если есть файл
                        $galleryimgExt = strtolower(preg_replace("#.+\.([a-z]+)$#i", "$1", $_FILES['photos']['name'][$i])); // расширение картинки
                 
                        $galleryimgName = "{$id}_{$i}.{$galleryimgExt}"; // новое имя картинки
                        $galleryimgTmpName = $_FILES['photos']['tmp_name'][$i]; // временное имя файла
                        $galleryimgSize = $_FILES['photos']['size'][$i]; // вес файла
                        $galleryimgType = $_FILES['photos']['type'][$i]; // тип файла
                        $galleryimgError = $_FILES['photos']['error'][$i]; // 0 - OK, иначе - ошибка
                        
                        if(!in_array($galleryimgType, $types)){
                            $error .= "Допустимые расширения - .gif, .jpg, .png <br />";
                            $_SESSION['answer'] .= "<div class='error'>Ошибка при загрузке картинки {$_FILES['photos']['name'][$i]} <br /> {$error}</div>";
                            continue;  
                        }
                        
                        if($galleryimgSize > SIZE){
                            $error .= "Максимальный вес файла - 1 Мб";
                            $_SESSION['answer'] .= "<div class='error'>Ошибка при загрузке картинки {$_FILES['photos']['name'][$i]} <br /> {$error}</div>";
                            continue;   
                        }
                        
                        if($galleryimgError){
                            $error .= "Ошибка при загрузке файла. Возможно, файл слишком большой";
                            $_SESSION['answer'] .= "<div class='error'>Ошибка при загрузке картинки {$_FILES['photos']['name'][$i]} <br /> {$error}</div>";
                            continue;   
                        }
                        
                        // если нет ошибок
                        if(empty($error)){
                          if(@move_uploaded_file($galleryimgTmpName, "userfiles/gal/img/$galleryimgName")){
                                resize("userfiles/gal/img/$galleryimgName", "userfiles/gal/mini_img/$galleryimgName", 150, 150, $galleryimgExt);
                                resize("userfiles/gal/img/$galleryimgName", "userfiles/gal/tmp/$galleryimgName", 1000, 1000, $galleryimgExt);
                                @unlink("userfiles/gal/img/$galleryimgExt");
                                
                                if(!isset($galleryfiles)){
                                    $galleryfiles = $galleryimgName;
                                }else{
                                    $galleryfiles .= "|{$galleryimgName}";
                                }
                                
                            }else{
                                $_SESSION['answer'] .= "<div class='error'>Не удалось переместить загруженную картинку. Проверьте права на папки в каталоге /userfiles/product_img/</div>";
                            }
                        }
                    }
                }//конец цикла
                if(isset($galleryfiles)){
                    mysql_query("UPDATE otziv SET img = '$galleryfiles' WHERE otziv_id = $id");
                }
                
            }


еще добавляю resize картинок
/* ===Ресайз картинок=== */
function resize($target, $dest, $wmax, $hmax, $ext){
    /*
    $target - путь к оригинальному файлу
    $dest - путь сохранения обработанного файла
    $wmax - максимальная ширина
    $hmax - максимальная высота
    $ext - расширение файла
    */
    list($w_orig, $h_orig) = getimagesize($target);
    $ratio = $w_orig / $h_orig; // =1 - квадрат, <1 - альбомная, >1 - книжная

    if(($wmax / $hmax) > $ratio){
        $wmax = $hmax * $ratio;
    }else{
        $hmax = $wmax / $ratio;
    }
    
    $img = "";
    // imagecreatefromjpeg | imagecreatefromgif | imagecreatefrompng
    switch($ext){
        case("gif"):
            $img = imagecreatefromgif($target);
            break;
        case("png"):
            $img = imagecreatefrompng($target);
            break;
        default:
            $img = imagecreatefromjpeg($target);    
    }
    $newImg = imagecreatetruecolor($wmax, $hmax); // создаем оболочку для новой картинки
    
    if($ext == "png"){
        imagesavealpha($newImg, true); // сохранение альфа канала
        $transPng = imagecolorallocatealpha($newImg,0,0,0,127); // добавляем прозрачность
        imagefill($newImg, 0, 0, $transPng); // заливка  
    }
    
    imagecopyresampled($newImg, $img, 0, 0, 0, 0, $wmax, $hmax, $w_orig, $h_orig); // копируем и ресайзим изображение
    switch($ext){
        case("gif"):
            imagegif($newImg, $dest);
            break;
        case("png"):
            imagepng($newImg, $dest);
            break;
        default:
            imagejpeg($newImg, $dest);    
    }
    imagedestroy($newImg);
}

ну и html
<input type="file" name="photos" multiple>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы