2012-02-17 45 views
0

上傳圖片時,我有這種形式:「未定義指數」 使用PHP

<form action="image_upload.php" method="post" enctype="multipart/form-data"> 
    Image 1: <input type="file" name="event_image" /> 
    <input type="submit" /> 
</form> 

這PHP代碼(image_upload.php):

print_r($_FILES); 
if ((($_FILES["event_image"]["type"] == "image/jpeg") 
|| ($_FILES["event_image"]["type"] == "image/pjpeg")) 
&& ($_FILES["event_image"]["size"] < 200000)) 
    { 
    if ($_FILES["event_image"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["event_image"]["error"] . "<br />"; 
    } 
    else 
    { 
    if (file_exists("/images/events/" . $_FILES["event_image"]["name"])) 
     { 
     echo $_FILES["event_image"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["event_image"]["tmp_name"], 
     "/images/events/" . $_FILES["event_image"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["event_image"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 

我不知道這是怎麼回事錯誤因爲我以前有相同的代碼。

我正在以下錯誤雖然...

陣列([event_image] =>陣列([名稱] => my_image.jpg [型] =>圖像/ JPEG [tmp_name的值] => /私人/ var/tmp/phpvIYmAZ [error] => 0 [size] => 48512))

Warning:move_uploaded_file(../../../ images/events/my_image.jpg):未能打開流:權限/path/event_upload.php否認線25

警告:move_uploaded_file()以:無法 '/私營/ var/tmp中/ phpvIYmAZ' 移動到」 ../../../images/events /my_image.jpg'放在/path/event_upload.php上25行存儲在:upload/my_ image.jpg的

說明:未定義指數:event_image在/path/event_upload.php上線57

+1

'print_r($ _ FILES)'在它的頂部,請。另外,在if語句中,應該添加條件isset($ _ FILES ['event_image'])'作爲第一個要評估的條件。你不應該評估任何其他的東西,如果這是錯誤的,或者你會得到未定義的索引錯誤。 – 2012-02-17 13:59:14

+0

該圖像不存在於$ _FILES中,可能是因爲它無法首先上傳。檢查是否設置了'$ _POST ['event_image']',並確認你沒有超過'max_upload_size'或'post_max_size' – 2012-02-17 14:00:35

回答

1

OK ......這似乎是我的本地機器上的文件夾權限問題...只是必須chmod該文件夾。

感謝您的所有建議,但。

+0

您能否詳細說明您使用文件夾/文件權限來刪除錯誤的具體操作? – Faizan 2013-03-27 17:26:17

+0

就我而言,我使用了Dreamweaver。我右鍵單擊文件窗口中的目錄並選擇「設置權限」,我可以將權限更改爲我需要的權限。 – Tom 2013-03-28 09:23:17

1

$_FILES陣列每個屬性項下數字索引,處理多個上載。

你必須硬編碼索引零,使用$_FILES["event_image"]["type"][0],$_FILES["event_image"]["name"][0]等你必須改變你使用的每一行$_FILES沒有數字索引。

通知:編輯原始答案以修正數組中的數字索引的正確位置。

+0

這是不正確的。 $ _FILES是一個關聯數組,名稱字段映射爲關鍵字:http://us.php.net/manual/en/reserved.variables.files.php – Churk 2012-02-17 14:05:16

+0

你是對的,我搞砸了!多個上傳的數字索引深入該數組中。回答編輯考慮適當的$ _FILES結構。 – bfavaretto 2012-02-17 14:10:41

0

只要你知道了$ _FILES對象的樣子,前右行號8怎麼樣,插入此echo "<PRE>" . print_r ($_FILES, true) . "</PRE>";

+0

完成並更新錯誤消息...任何想法? – Tom 2012-02-17 14:12:42