2014-11-25 123 views
0

我有一個表單,用戶可以通過它將圖像上傳到服務器文件夾,並將路徑保存到數據庫中。將多個圖像上傳到服務器文件夾

當前用戶只能輸入一個圖像時,我的代碼工作正常;然而,我想要做的事就像形式的下,讓用戶可以上傳多張圖片:

<form class="form-horizontal" role="form" action="insertimage.php?id=<?php echo $_GET['id']; ?>" enctype="multipart/form-data" method="post"> 
    <div class="col-md-6"> 
     <div class="form-group"> 
      <label class="col-lg-4 control-label">Select Image 1</label> 
       <div class="col-lg-6"> 
        <input type="file" name="file" id="fileToUpload"> 
       </div> 
     </div> 
    </div> 

    <div class="col-md-6"> 
     <div class="form-group"> 
      <label class="col-lg-4 control-label">Select Image 2</label> 
       <div class="col-lg-6"> 
        <input type="file" name="file1" id="fileToUpload"> 
       </div> 
     </div> 
    </div> 

    <div class="col-md-6"> 
     <div class="form-group"> 
      <label class="col-lg-4 control-label">Select Image 3</label> 
       <div class="col-lg-6"> 
        <input type="file" name="file2" id="fileToUpload"> 
       </div> 
     </div> 
    </div> 

    <div class="col-md-6"> 
     <div class="form-group"> 
      <label class="col-md-3 control-label"></label> 
       <div class="col-md-8"> 
        <input class="btn btn-primary" value="Save Changes" type="submit" name="submit"> 
       </div> 
     </div> 
    </div> 
</form> 

的PHP代碼在後端上傳一個圖片是insertimage.php

<?php 
$file_exts = array("jpg", "bmp", "jpeg", "gif", "png"); 
$upload_exts = end(explode(".", $_FILES["file"]["name"])); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/png") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 2000000) 
&& in_array($upload_exts, $file_exts)) 
    { 
     if ($_FILES["file"]["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"]/1024) . " kB<br>"; 
       echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 
       // Enter your path to upload file here 
       if (file_exists("uploads/" .$_FILES["file"]["name"])) 
        { 
         echo "<div class='error'>"."(".$_FILES["file"]["name"].")"." already exists. "."</div>"; 
        } 
       else 
        { 
         move_uploaded_file($_FILES["file"]["tmp_name"],"uploads/" . $_FILES["file"]["name"]); 
         echo "<div class='sucess'>"."Stored in: " . "uploads/" . $_FILES["file"]["name"]."</div>"; 
    `    } 
      } 
    } 
else 
    { 
     echo "<div class='error'>Invalid file</div>"; 
    } 
?> 

任何人都可以請告訴我如何在上述代碼的幫助下支持上傳3張圖片?

回答

0

您可以同時使用多個圖像文件陣列具有多個屬性,如HTML行:

<input type="file" name="file[]" id="fileToUpload" multiple /> 

這會給你的文件的數組,你可以通過

print_r($_FILES); 
調試

而且你還必須更改保存數據的代碼,因爲有錯誤,它一次只能有一個文件嘗試循環我的調試

$_FILES 
+0

我想單獨上傳的圖像,所以那種避免使用多個關鍵字 – user3789102 2014-11-25 04:21:21

+0

如果你想避免多個關鍵字,那麼你必須添加文件標籤,儘可能多的時間你想上傳圖像,並且你必須通過相同的文件名,所以它創建一個數組,它會解決你的問題 – Affan 2014-11-25 04:37:01

+0

最多5個文件,你會在視圖級別驗證輸入只需要5個文件。 – 2014-11-25 05:43:05

2

有了這個,你可以用用ctrl

<input type="file" name="file[]" id="fileToUpload" multiple /> 

的在服務器端使用循環來選擇多個圖像

for ($1=0;i<count($dataFile);$i++){ 
    //your upload code ; 
    $_FILES["file"]["name"][$i];//go for each and every i position for all 
} 
+0

我希望用戶只能上傳5張圖片,那麼這些代碼也可以使用嗎? – user3789102 2014-11-25 04:25:03

+0

是這個代碼運行的總數沒有選定的圖像,如果修復5個圖像,你必須在php代碼端更改計數爲5 – Affan 2014-11-25 04:26:40

相關問題