2010-10-06 131 views
-2

這是我所做的代碼,我期待它的工作,但在某處必須有一個錯誤。我無法弄清楚自己,請幫忙。我的代碼有問題嗎?多重上傳PHP文件

<?php 

if(isset($_POST['submit'])){ 

    $max_size = 500000; 
    $image_upload_path = "images/products/"; 
    $allowed_image_extension = array('jpg','jpeg','png','gif'); 


    for($i=0;$i<2;$i++) 
    { 
     //check if there is file 
     if((!empty($_FILES['image[]'][$i])) && ($_FILES['image[]']['error'][$i]==0)) 
     { 
      //check extension 
      $extension = strrchr($_FILES['image']['name'][$i], '.'); 
      if(in_array($extension,$allowed_image_extension)) 
      { 
       //check file size. 
       if($_FILES['image']['size'][$i] > $max_size) 
       { 
        echo "file too big"; 
       } 
       else if($_FILES['image']['size'][$i] < 1) 
       { 
        echo "file empty"; 
       } 
       else 
       { 
        //we have pass file empty check,file extension check,file size check. 
        $the_uploaded_image = $_FILES['image']['tmp_name'][$i]; 
        $the_uploaded_image_name = $_FILES['image']['name'][$i]; 

        //replace empty space in filename with an underscore '_' 
        $the_uploaded_image_name = preg_replace('/\s/','_',$the_uploaded_image_name); 

        //get the file extension 
        $the_uploaded_image_extension = explode(',',$the_uploaded_image_name); 
        $the_new_image_name = $the_uploaded_image_name."".md5(uniqid(rand(),true))."".$the_uploaded_image_extension; 

        $save_image_as = $the_new_image_name; 
        //check file exist 
        if(file_exists($image_upload_path."".$the_new_image_name)) 
        { 
         echo "file".$image_upload_path."".$the_new_image_name." already exist"; 
        } 
        else 
        { 
         if(move_uploaded_file($the_uploaded_image,$save_image_as)) 
         { 
          echo "image".$the_uploaded_image_name." uploaded sucessfully"; 
          //set the image path to save in database column 
         } 
         else 
         { 
          echo "there was an error uploading your image."; 
         } 
        } 
       } 
      } 
      else 
      { 
      echo "extension not allowed"; 
      } 
     } 
     else 
     { 
      echo "please choose file to upload"; 
     } 
    } 


} 

?> 

<html> 
<head><title>image upload</title></head> 
<body> 
<form action="" method="POST" enctype="multipart/form-data"> 
    <input type="file" name="image[]"/> 
    <input type="file" name="image[]"/> 
    <input type="submit" value="submit"/> 
</form> 
</body> 
</html> 

這是我的新PHP代碼。我得到兩個結果,發現發現沒有發現沒有找到。有人會告訴我我在這裏做錯了什麼。由於兩種條件都在輸出,因此if條件似乎不起作用。爲什麼?

<?php 
if(isset($_POST["submit"])) { 
    echo $_POST["submit"]; 
    echo "<br/>"; 
    for($i=0;$i<count($_FILES['image'])-1;$i++) 
    { 
     if(!empty($_FILES['image']['tmp_name'][$i])) 
     { 
      echo "found";  
      echo "<br/>"; 
     } 
     else 
     { 
      echo "not found"; 
      echo "<br/>"; 
     } 
    } 

} 
else 
{ 
    echo "form is not posted"; 
} 

?>

+0

願您如此友善,給我們*任何*指示發生了什麼/沒有發生? – deceze 2010-10-06 22:28:31

+1

@deceze說什麼。請給你的問題添加一個問題,並描述什麼不起作用。 – 2010-10-06 22:29:04

回答

3

我想最明顯的WTF將$_FILES['image[]'][$i],這應該只是$_FILES['image'][$i](在名稱中[]使其成爲一個數組,它不是名稱的一部分)。

我不願意在沒有更多信息的情況下爲您診斷超出此範圍的任何內容。嘗試在代碼中的各個點:

echo '<pre>'; 
var_dump($_POST); // or other variables 
echo '</pre>'; 

這應該有助於您調試自己的代碼,您必須學會做的事情。

+0

即時通訊仍然是空白屏幕,沒有任何錯誤,既沒有輸入文件的圖像上傳。 – 2010-10-06 22:54:38

+2

@Roger然後打開錯誤報告,並讓腳本轉儲'$ _FILES'。 – 2010-10-06 22:56:21

+1

另外@Roger這真的是一個基本調試的例子,這裏沒有人能夠(或將會)爲你做。首先你打開錯誤報告。然後你檢查是否設置了'$ _POST [「submit」]' - 例如通過使測試輸出'echo「提交被設置!」;'。然後你測試第13行的條件是否實際滿足,例如通過製作另一個測試輸出。等等等等。這裏的每個人都必須經歷這一點 - 這是我們都學習的方式 – 2010-10-06 22:59:51