[File-upload] 上傳大於POST_MAX_SIZE時,PHP $ _POST / $ _FILES為空


Answers

像這樣的東西:

if ($_SERVER['CONTENT_LENGTH'] && !$_FILES && !$_POST) {
  // upload failed
}

未經測試,所以玩各種場景,看看什麼樣的組合工作。 不知道它是否可以同時處理多個文件上傳。

您可能需要檢查$_SERVER['CONTENT_LENGTH']並將其與收到的文件的總和進行比較,如果處理多個上傳。

Question

可能重複:
如何檢測用戶上傳的文件是否大於post_max_size?

我正在編寫一個處理來自Web應用程序的文件上傳的腳本。 我對可能上傳到我的應用程序的文件大小有一個限制(存儲空間限制)。 我目前正試圖把一些驗證代碼,將檢查,以確保用戶實際上傳一個文件,以便我可以顯示一個很好的錯誤信息給他們。 但是,如果用戶上傳的文件太大,我也希望能夠向用戶顯示一條錯誤消息。 我可以使用Javascript,但是我想要一個PHP檢查,以防萬一他們沒有啟用Javascript。

我已經將PHP.ini中的POST_MAX_SIZE var設置為最大的文件上傳大小,但是這產生了意外的問題。 如果有人試圖上傳大於POST_MAX_SIZE的文件,則二進制數據只會以最大大小被截斷,$ _FILES數組不會包含該文件的條目。 這與用戶根本沒有提交文件的情況是一樣的。

這使得很難說出為什麼$ _FILES數組不包含文件,也就是說它是否沒有上傳,或者它是否太大而無法完全發送。

有沒有辦法區分這兩種情況? 換句話說,有沒有一種方法可以告訴POST數據是否發送了一個文件,但是在整個文件被發送之前被提前截斷了?