2013-08-12 3 views
1

HTML 양식에서 여러 파일을 폴더로 업로드하고 데이터베이스에 정보를 저장하려고합니다. 다음 코드를 작성했지만 올바로 작동하지 않습니다. 1 개의 이미지를 업로드하고 다른 2 개의 이미지 필드를 남겨둔 경우 동일한 이름과 동일한 이미지의 3 개의 이미지를 저장하고 3 개의 다른 필드에 3 개의 다른 이미지를 업로드하면 마지막 이미지 만 가져 와서 다른 이미지로 바꾸고 보여줍니다 모두를위한 동일한 이미지.여러 이미지를 HTML에서 파일로 업로드하는 방법은 무엇입니까?

친절하게 안내해드립니다. 여러 파일을 업로드를 들어

HTML Image Fields 

<file> <Image2> <Image3> 

PHP 코드

 /*------------------- 
     IMAGE QUERY 
     ---------------*/ 
     $allowedExts = array("gif", "jpeg", "jpg", "png"); 
    $extension = end(explode(".", $_FILES["file"]["name"])); 


    if ((($_FILES["file"]["type"] == "image/gif") 
    || ($_FILES["image2"]["type"] == "image/gif") 
    || ($_FILES["image3"]["type"] == "image/gif") 
    || ($_FILES["file"]["type"] == "image/jpeg") 
    || ($_FILES["image2"]["type"] == "image/jpeg") 
    || ($_FILES["image3"]["type"] == "image/jpeg") 
    || ($_FILES["file"]["type"] == "image/jpg") 
    || ($_FILES["image2"]["type"] == "image/jpg") 
    || ($_FILES["image3"]["type"] == "image/jpg") 
    || ($_FILES["file"]["type"] == "image/pjpeg") 
    || ($_FILES["image2"]["type"] == "image/pjpeg") 
    || ($_FILES["image3"]["type"] == "image/pjpeg") 
    || ($_FILES["file"]["type"] == "image/x-png") 
    || ($_FILES["image2"]["type"] == "image/x-png") 
    || ($_FILES["image3"]["type"] == "image/x-png") 
    || ($_FILES["file"]["type"] == "image/png") 
    || ($_FILES["image2"]["type"] == "image/png") 
    || ($_FILES["image3"]["type"] == "image/png")) 
    //&& ($_FILES["file"]["size"] < 200000) 
    && in_array($extension, $allowedExts)) 

     { 
     if ($_FILES["file"]["error"] > 0 && $_FILES["image"]["error"] > 0) 
     { 
     echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
     } 
     else 
     { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
     echo "Size: " . ($_FILES["file"]["size"]/200000) . " kB<br>"; 

     echo "Upload: " . $_FILES["image2"]["name"] . "<br>"; 
     echo "Type: " . $_FILES["image2"]["type"] . "<br>"; 
     echo "Size: " . ($_FILES["image2"]["size"]/200000) . " kB<br>"; 




      $image_name=  $_FILES["file"]["name"]; 
      $random_name=  rand().$_FILES["file"]["name"]; 


      $image_name2=  $_FILES["image2"]["name"]; 
      $random_name2=  rand().$_FILES["image2"]["name"]; 


      $image_name3=  $_FILES["image3"]["name"]; 
      $random_name3=  rand().$_FILES["image3"]["name"]; 






      $path=    move_uploaded_file($_FILES["file"]["tmp_name"], 
             "upload/products/" . $random_name); 


      $path2=    move_uploaded_file($_FILES["image2"]["tmp_name"], 
             "upload/products/" . $random_name);  


      $path3=    move_uploaded_file($_FILES["image3"]["tmp_name"], 
             "upload/products/" . $random_name); 



      $folder="upload/products/" .$random_name; 

      $folder2="upload/products/" .$random_name; 

      $folder3="upload/products/" .$random_name; 




       //echo "Stored in: " . "upload/" .rand(). $_FILES["file"]["name"]; 
       echo "Stored in: "."upload/products/". $random_name; 

      /* 
       $sql = "INSERT INTO `category_images` (`image_name`,`image_location`) VALUES 
        ('".$image_name."', '".$path."')"; 
      */  



       $sql = "Insert into product_images (product_id,name,images) 
        VALUES ($current_id,'$image_name', '$folder')"; 


       $sql2 = "Insert into product_images (product_id,name,images) 
        VALUES ($current_id,'$image_name2', '$folder2')"; 


       $sql3 = "Insert into product_images (product_id,name,images) 
        VALUES ($current_id,'$image_name3', '$folder3')"; 

       $result = mysql_query($sql); 
       mysql_query($sql2); 
       mysql_query($sql3); 

       if ($result) 
       { 

        echo "successfull"; 
       } 
       else { 
         echo mysql_error(); 
     } 


      } 
     } 

    else 
     { 
     echo "Invalid file"; 
     } 


     /*----------------- 
     IMAGE QUERY END 
     ------------------*/ 

답변

0

의 더 나은 배열로 입력 필드 이름을 사용하기 때문에 업로드 된 파일이 아니라 쉽게 처리 할 수있는 배열로 구성됩니다. 그래서 업로드 양식이

<form action="upload.php" method="post" enctype="multipart/form-data"> Image1: <input name="image[]" type="file" /><br /> Image2: <input name="image[]" type="file" /><br /> Image3: <input name="image[]" type="file" /><br /> Image4: <input name="image[]" type="file" /><br /> Image5: <input name="image[]" type="file" /><br /> <input type="submit" value="Upload" /> </form>

처럼 그리고 upload.php로에 보일 것이다

if($_FILES['image']) 
{ 
//organise the array :: refer http://php.net/manual/en/features.file-upload.multiple.php for more details 
$images = reArrayFiles($_FILES['image']); 
$image_count = count($_FILES['image']['name']); 
for ($i = 0; $i < $image_count; $i++) 
{ 
    if($images[$i]['name']!='' && $images[$i]['tmp_name']!='') 
    { 

     $path = 'upload/products/'; 
     $saved = 0; 
     # Upload file to folder 
     $filename = basename($images[$i]['tmp_name']); 
     $filename_array = explode('.', $filename); 
     $ext = strtolower(end($filename_array)); 
        $image_name = date('YmdHis').'.'.$ext; //random file naming 
     if(in_array(strtoupper($ext), $allowed_ext)) { 
      $folder = $path . $image_name; 
      $saved = move_uploaded_file($images[$i]['tmp_name'], $folder); 
     } 
     if($saved) 
     { 
      $sql = "INSERT INTO product_images (product_id,name,images) VALUES ($current_id,'$image_name', '$folder')"; 
      if(mysql_query($sql)) 
       echo "successfull"; 
     } 
     else 
     { 
      echo 'Failed to upload file'; 
     } 
    } 
} 
} 

function rearrange($arr){ 
foreach($arr as $key => $all){ 
    foreach($all as $i => $val){ 
     $new[$i][$key] = $val; 
    } 
} 
return $new; 
} 
관련 문제