2009-10-26 35 views
2

我試圖通過PHP腳本獲取上傳的文件,但是我的$ _FILES數組總是空的?文件HTML輸入元素的$ _POST數據條目具有文件名...我的本地系統上只創建了任何文件。

我已驗證對臨時文件夾的寫入權限以及明確設置它的權限。我已經檢查過phpinfo()以確保文件上傳已啓用,並且它們是。

有什麼可以阻止呢? mod_rewrite會導致什麼?

謝謝!

回答

14

當你有適當的加密類型(<form method="post" enctype="multipart/form-data">),然後檢查$ _FILES errno變量,也有失敗的各種可能原因。典型值是超過MAX_FILE_SIZE。

http://php.net/manual/en/features.file-upload.errors.php

自PHP 4.2.0,PHP返回與 文件陣列沿 適當的錯誤代碼。在由PHP上傳文件 期間創建的文件 數組的錯誤段中可能出現錯誤代碼 。換句話說, 錯誤可能在 $ _FILES ['userfile'] ['error']中找到。

UPLOAD_ERR_OK值:0;沒有 錯誤,文件上傳成功。

UPLOAD_ERR_INI_SIZE值:1; 上傳的文件超出了php.ini中 中的 upload_max_filesize指令。

UPLOAD_ERR_FORM_SIZE值:2; 上傳的文件超出了HTML表單中指定的 MAX_FILE_SIZE指令 。

+0

print_r($ _ FILES)result in array()... 因此,不幸的是,該數據不可用。然而,我的表單中有enctype =「multipart/form-data」。 – 2009-10-27 03:59:19

+0

我仔細看了一下 - 奇怪的是在較低分辨率的屏幕上使它更有趣 - 而且我的代碼中存在拼寫錯誤。 考慮到我在找到這個時候發現的頭幾個解決方案中的一些說「注意輸入錯誤」,這更加具有諷刺意味。所以......簡單地說......這裏排隊很多,注意輸入錯誤!感謝所有踢在褲子裏的人:) – 2009-10-27 04:02:57

12

您是否在表單中定義了enctype?

<form method="post" enctype="multipart/form-data"> 

如果沒有設置,則不會上傳任何文件。

+0

是的,我回答一個非常古老的線程,但是這是我的確切的錯誤及解決方案。 – 2013-04-02 21:25:54

3

表單是否有正確的文本類型?

enctype="multipart/form-data"