2012-07-05 48 views
0

非常抱歉,如果這已被回答,但我一直在尋找谷歌一段時間,並沒有找到答案。如何更改已上傳的照片。 PHP

我的問題

我上傳了一個PHP文件用於我的網站。我想成爲麥芽酒,讓用戶選擇更改他們上傳的圖像。我設法做到了,當他們只能上傳1張圖片,但現在我試圖添加更多。他們可以添加多張照片,但當涉及到改變他們即時通訊有問題時。

這裏是我的1幅圖像(工作)代碼

$newname = "$pid.jpg"; 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$newname"); 
header("location: inventory_list.php"); 
exit(); 

這是我用來改變它的代碼。

if ($_FILES['fileField']['tmp_name'] != "") { 
    // Place image in the folder 
    $newname = "$pid.jpg"; 
    move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$newname"); 
} 
header("location: inventory_list.php"); 

這就是我現在已將代碼更改爲多個圖像。

$image1 = "$pid Image1.jpg"; 
$image2 = "$pid Image2.jpg"; 
$image3 = "$pid Image3.jpg"; 
$image4 = "$pid Image4.jpg"; 
$image5 = "$pid Image5.jpg"; 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image1"); 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image2"); 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image3"); 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image4"); 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image5"); 
header("location: inventory_list.php"); 

這是我已經試過,但我知道有一個在如果

if ($_FILES['fileField']['tmp_name'] != "") { 
    // Place image in the folder 
$image1 = "$pid Image1.jpg"; 
$image2 = "$pid Image2.jpg"; 
$image3 = "$pid Image3.jpg"; 
$image4 = "$pid Image4.jpg"; 
$image5 = "$pid Image5.jpg"; 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image1"); 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image2"); 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image3"); 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image4"); 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../inventory_images/$image5"); 
} 

一個邏輯上的錯誤,這是我表單的一部分

 <tr> 
    <td align="right">Product Image: 1</td> 
    <td><div class="single"> 
    <a href="../inventory_images/<?php echo $id; ?> Image1.jpg" rel="lightbox" title="<?php echo $product_name; ?>"><img src="../inventory_images/<?php echo $id; ?> Image1.jpg" width="142" height="188" alt="<?php echo $product_name; ?>" /></a> 
</div></td> 
    </tr> 
     <tr> 
    <td align="right"></td> 
    <td><label> 
     <input type="file" name="Image1" id="Image1" /> 
    </label></td> 
    </tr> 

感謝您的幫助

+0

什麼是$ PID? – Hkachhia 2012-07-05 11:35:34

+0

抱歉$ pid是產品ID。將產品與圖像聯繫起來。 – Will 2012-07-05 12:17:59

回答

1

$_FILES['fileField']不會包含圖片,因爲你輸入的名字是Image1。您必須使用$_FILES['Image1']。但是,正如Mouloud所建議的那樣,使用一個內置的數組然後在其上循環會更容易。但是,如果你想給每個圖像 - 輸入一個獨特的名字,也將工作。

這裏是我會怎麼做:

HTML:

<input type="file" name="image[1]" id="Image1" /> 
<input type="file" name="image[2]" id="Image2" /> 
<input type="file" name="image[3]" id="Image3" /> 
... 

PHP:

foreach($_FILES['image']['tmp_name'] as $i => $tmpName) { 
    if ($tmpName){ 
     move_uploaded_file($tmpName, "../inventory_images/{$pid}Image{$i}.jpg"); 
    } 
} 
+0

感謝這是一個更乾淨的方式! – Will 2012-07-05 12:16:49

+0

我已經使用這種方式上傳了文件。我將如何去讓用戶選擇改變他們中的任何一個,而不必改變他們所有的人? – Will 2012-07-05 12:21:55

+0

@Will你是什麼意思改變?你想給用戶一個選項來替換一些新的文件嗎? – flec 2012-07-05 12:25:25

1

輸入文件字段必須像這樣用於多個文件上傳(例如):

<input type="file" name="Images[]" id="Image1" /> 
在多個文件

上傳$ _FILE陣列具有以下格式:

$_FILES['Images']['name'][0] // first file name 
$_FILES['Images']['tmp_name'][0] // first file tmp_name 

也看到了max_file_uploads配置指令

這將helpe你:http://www.php.net/manual/en/features.file-upload.multiple.php

PS:在鏈接上面看到的第一個評論通過多納塔斯Olseviius: 他給予修復了$ _FILE陣列。

+0

它應該是$ _FILES ['Images']以匹配您的html – flec 2012-07-05 12:04:16

+0

you'r right flec,我現在要做 – Mouloud 2012-07-05 13:04:05