Answer the question
In order to leave comments, you need to log in
How to upload more images using this php code?
Hello everyone, maybe the question is stupid but forgive me right away, I'm still learning.
<?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>";
}
}
}
}
}
?>
<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>
Answer the question
In order to leave comments, you need to log in
First, you need to add the multiple attribute to the input with the file type:
to make it possible to select two files.
And then, if I'm not mistaken (I haven't written in PHP for a long time), $_FILES['uploaded_file']['name'] will contain an array of files that will need to be written using for.
I use this code
Here is another example of how to save the $id in the path database
- for example, the id of a product or a gallery
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");
}
}
/* ===Ресайз картинок=== */
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);
}
<input type="file" name="photos" multiple>
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question