2012-03-19 210 views
1

我需要修改圖片上傳表單,以便我可以上傳多個圖片(準確的說是6張)。我嘗試添加另一個輸入,並按照其他人的建議更改名稱值,但仍然顯示與第一個輸入相同的圖像。我知道這可能很簡單,但我不是PHP開發人員,所以我一直無法找到解決方案。上傳多張圖片,PHP

下面是上傳圖片的代碼:

if(isset($_FILES['image']) && $_FILES['image']['tmp_name'] != '') { 
     $tempext = explode('.', $_FILES['image']['name']); 
     $tempext = strtolower($tempext[count($tempext) - 1]); 
     switch($tempext) { 
      case 'jpg': 
      case 'jpeg': 
       $ext = '.jpg'; 
       break; 
      default: 
       $ext = false; 
     } 

     if($ext != false && move_uploaded_file($_FILES['image']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext)) { 
      $imagesuccess = chmod($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext, 0644) ? 'yes' : 'no'; 
     } else { 
      $imagesuccess = 'no'; 
     } 
    } 

而對於輸入:

<div class="control-container<?php if((isset($_FILES['image']) && !empty($_FILES['image']['name']))) echo ' error'; ?>"> 
      <label for="image">Large Image</label> 
      <div class="multifield"> 
       <?php 
       if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . '.jpg')) { 
        echo '<img src="/img/profiles/' . $id . '.jpg?' . rand() . '" width="310px" />'; 
       } 
       ?> 
       <input type="file" name="image" id="image" /> 
      </div> 
</div> 

任何幫助將非常感激。

感謝

回答

4

你需要有多個輸入字段:

<input type="file" name="image1" /> 
<input type="file" name="image2" /> 
etc... 

,並訪問每個單獨的文件:

$_FILES['image1'][...] 
$_FILES['image2'][...] 
etc... 

,或者您可以使用特定的PHP陣列符號快捷鍵:

<input type="file" name="image[]" /> 
<input type="file" name="image[]" /> 

$_FILES['image']['tmp_name'][0]; 
$_FILES['image']['tmp_name'][1]; 
etc... 

注意使用數組符號時,PHP使得文件陣列自己的陣列中的每個單獨的數據點。不是將文件數據集中在一個陣列中,而是將每個位分散在多個陣列中。

+0

我試過這兩種解決方案,但表單仍然只發送一個圖像到數據庫,這是使用最後一個輸入字段上傳的圖像。 – Ryan 2012-03-19 15:29:47

+0

'var_dump($ _ FILES)'顯示什麼?去結構化你的代碼。 – 2012-03-19 15:32:40

+0

好吧,我已經搞砸了一下,它現在看起來像在數據庫中顯示出來。它出現了一個1添加到ID的末尾,即使我已經添加_02到輸入名稱和URL。儘管如此,它似乎仍然不想把圖片放到網站上。 – Ryan 2012-03-19 15:45:37

0

如果您需要上傳更多文件,只需更改name元素。例如,您可以使用JavaScript添加其他輸入字段。每個元素將有一個name="images[]"提交後,你可以看到你通過var_dump($_FILES)得到。

2

如果您的窗體中有6個文件輸入,$ _FILES應該包含一個數組。在處理文件中使用print_r($_FILES)進行檢查。

0

上傳多張圖片基本片斷:

<html> 
<?php 
define("UPLOAD_DIR", "/path/to/uploads/"); 

for ($i = 0; $i < count($_FILES["file"]["tmp_name"]); $i++) { 
    if (is_uploaded_file($_FILES["file"]["tmp_name"][$i])) { 
     move_uploaded_file($_FILES["file"]["tmp_name"][$i], UPLOAD_DIR . $_FILES["file"]["name"][$i]); 
    } 
} 
?> 
<body> 
    <form method="post" enctype="multipart/form-data"> 
    <input name="file[]" type="file" /><br /> 
    <input name="file[]" type="file" /><br /> 
    <input name="file[]" type="file" /><br /> 
    <input type="submit" /> 
    </form> 
</body> 
</html> 
0

@Ryan我認爲你的問題可能是HTML部分中爲什麼不ü使用單輸入它泔水你whant什麼例如

<form method="post" enctype="multipart/form-data"> 
    <input name="file[]" type="file" multiple="true"><br /> 
    <input type="submit" /> 
    </form>