Форма за ъплоуд на снимки

kini

Registered
Здравейте,

Имам въпрос за форма за ъплоуд или по-точно какво трябва да се добави, за да мога да качвам едновременно например 5 броя изображения от 5 добавени полета.

Код:
<input type="file" name="file1" id="file1">
<input type="file" name="file2" id="file2"> и т.н

В момента извличам само един файл с $filename

Формата е следната:

Код:
if($_SERVER["REQUEST_METHOD"] == "POST"){
$image = $_FILES["file"]["name"];
$uploadedfile = $_FILES['file']['tmp_name'];

if ($image){
  $filename = stripslashes($_FILES['file']['name']);
 
  $extension = getExtension($filename);
  $extension = strtolower($extension);
 
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")){
 
 
                                                                 $change = 'Непозволен формат!';
  $errors = 1;
} else {
$size=filesize($_FILES['file']['tmp_name']);
 
if ($size > MAX_SIZE*1024){
$change = 'Снимката е прекалено голяма!';
$errors = 1;
}


if($extension=="jpg" || $extension=="jpeg" ){
$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefromjpeg($uploadedfile);

} else if($extension=="png"){
$uploadedfile = $_FILES['file']['tmp_name'];
$src = imagecreatefrompng($uploadedfile);
} else {
$src = imagecreatefromgif($uploadedfile);
}

echo $scr;

list($width,$height)=getimagesize($uploadedfile);

$newwidth=128;
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);


$newwidth1=48;
$newheight1=($height/$width)*$newwidth1;
$tmp1=imagecreatetruecolor($newwidth1,$newheight1);

imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);

$n = strtolower($userdata['email'])."_".mktime().".".$extension;

$filename = "uploads/".$n;
$filename1 = "uploads/thumb/thumb_".$n;

imagejpeg($tmp,$filename,100);
imagejpeg($tmp1,$filename1,100);

imagedestroy($src);
imagedestroy($tmp);
imagedestroy($tmp1);

if($n != "default.jpg"){
unlink("uploads/thumb/thumb_".$n."");
unlink("uploads/".$n."");
}



}
}
}
 
Ето ти пример:
PHP:
extract($_POST);
    $error=array();
    $extension=array("jpeg","jpg","png","gif");
    foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name)
            {
                $file_name=$_FILES["files"]["name"][$key];
                $file_tmp=$_FILES["files"]["tmp_name"][$key];
                $ext=pathinfo($file_name,PATHINFO_EXTENSION);
                if(in_array($ext,$extension))
                {
                    if(!file_exists("photo_gallery/".$txtGalleryName."/".$file_name))
                    {
                        move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"photo_gallery/".$txtGalleryName."/".$file_name);
                    }
                    else
                    {
                        $filename=basename($file_name,$ext);
                        $newFileName=$filename.time().".".$ext;
                        move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"photo_gallery/".$txtGalleryName."/".$newFileName);
                    }
                }
                else
                {
                    array_push($error,"$file_name, ");
                }
            }

HTML:
<form action="create_photo_gallery.php" method="post" enctype="multipart/form-data">
    <table width="100%">
        <tr>
            <td>Select Photo (one or multiple):</td>
            <td><input type="file" name="files[]" multiple/></td>
        </tr>
        <tr>
            <td colspan="2" align="center">Note: Supported image format: .jpeg, .jpg, .png, .gif</td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="Create Gallery" id="selectedButton"/></td>
        </tr>
    </table>
</form>

https://stackoverflow.com/questions/24895170/multiple-image-upload-php-form-with-one-input
 
dakata__92 каза:
Ето ти пример:
PHP:
extract($_POST);
    $error=array();
    $extension=array("jpeg","jpg","png","gif");
    foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name)
            {
                $file_name=$_FILES["files"]["name"][$key];
                $file_tmp=$_FILES["files"]["tmp_name"][$key];
                $ext=pathinfo($file_name,PATHINFO_EXTENSION);
                if(in_array($ext,$extension))
                {
                    if(!file_exists("photo_gallery/".$txtGalleryName."/".$file_name))
                    {
                        move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"photo_gallery/".$txtGalleryName."/".$file_name);
                    }
                    else
                    {
                        $filename=basename($file_name,$ext);
                        $newFileName=$filename.time().".".$ext;
                        move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"photo_gallery/".$txtGalleryName."/".$newFileName);
                    }
                }
                else
                {
                    array_push($error,"$file_name, ");
                }
            }

HTML:
<form action="create_photo_gallery.php" method="post" enctype="multipart/form-data">
    <table width="100%">
        <tr>
            <td>Select Photo (one or multiple):</td>
            <td><input type="file" name="files[]" multiple/></td>
        </tr>
        <tr>
            <td colspan="2" align="center">Note: Supported image format: .jpeg, .jpg, .png, .gif</td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="Create Gallery" id="selectedButton"/></td>
        </tr>
    </table>
</form>

https://stackoverflow.com/questions/24895170/multiple-image-upload-php-form-with-one-input

Пробван е подобен принцип, не ми върши работа.

Имам 5 броя колони в таблицата, като в първата слагам главното изображение, точно за това търся по-добър начин.
 
Ако съм те разбрал правилно искаш да качваш пет снимки от пет инпут полета в пет колони в базата данни :) .

Ще ти дам прост пример и ще се опитам да обясня, а ти ще си го донапишеш.

Първо name трябва да е масив, в случая files[]. Той е един и същ за всяко поле.

PHP:
<form action="upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="files[]" type="file" /><br />
  <input name="files[]" type="file" /><br />
  <input type="submit" value="Send files" />
</form>

Да приемем че качваш две снимки с имена image-1.jpg и image-2.jpg

Масивът files[] ще съдържа цялата информация за тях и ще можеш да ги достъпваш както всеки масив.

Например

$_FILES['files']['name'][0] съдържа image-1.jpg
$_FILES['files']['name'][1] съдържа image-2.jpg

$_FILES['files']['size'][0] съдържа размера на image-1.jpg
$_FILES['files']['size'][1] съдържа размера на image-2.jpg

$_FILES['files']['tmp_name'][0] съдържа името на първия временен файл
$_FILES['files']['tmp_name'][1] съдържа името на втория временен файл

След като знаеш каквото ти трябва за да достъпиш различните файлове, си правиш проверките и т.н.
 
За повече от един файл използвай атрибута multiple в
HTML:
 <input type=file multiple />

https://stackoverflow.com/questions/1593225/how-to-select-multiple-files-with-input-type-file

Така ще е по-удобно за потребителите, защото от един popup ще могат да изберат всичко наведнъж, а не всеки път да търсят по директории.
 

Горе