[英]Upload file with laravel5.4 file size
我目前有一個帶有文件上傳的表單,在該文件上傳時,我有一個驗證,以確保它是圖像或文檔,並確保大小不能大於2M :
'insurence_document' => 'required|mimes:jpeg,png,jpg,pdf,doc,docx:|max:2048',
但我不明白,我設置的驗證規則應該阻止它甚至獲得.zip! 它甚至不是正確的 mime 類型。 但是如果我上傳一個較小的.zip ,它驗證正常。 所以問題似乎出在更大的文件上。
我的錯誤如警告:
POST Content-Length of 24479807 bytes 超出Unknown on line 8388608 bytes的限制
它不是關於上述錯誤,而是關於 Laravel 驗證不適用於大型上傳文件。 我希望文件大小保持在 2MB 左右。
我只想通過 Laravel 驗證來完成
8388608 字節為 8M , 默認文件上傳大小為2MB
打開php.ini文件。 在php.ini文件中找到這些行並將其替換為以下數字: upload_max_filesize = 64M
保存更改並再次嘗試上傳文件。
您可以在xampp/php/php.ini (Windows 用戶) 文件中找到路徑並且必須重新啟動服務器
我會為此創建一個自定義的 Laravel 驗證規則,以找出為什么會傳遞 Zip 文件和 2mb 文件大小。 在那里您將能夠手動處理驗證並查看為什么通過您想要設置的規則。 如果你弄清楚了,我相信你就能找出為什么會發生這種情況。
在php.ini文件中使用upload_max_filesize = -1
如果您超過了 php 限制,那么服務器將在到達您的驗證器之前拒絕上傳。 這樣它就不會產生驗證消息,但 php 會拋出錯誤。 因此,即使文件類型與您在rule
上設置的mime
不同,您也不會收到該rule
的消息,因為它沒有到達它。
另一種情況是,如果您在rule
上設置了required
並且文件超出了 php 限制,那么您將收到來自 validaiton 的消息: The field is required
。 發生這種情況的原因與前面提到的相同,因為文件沒有到達驗證器,驗證器會將輸入視為空字段並拋出required
消息。
解決方案是更改 php.ini 中的post_max_size
和upload_max_filesize
。
快樂編碼!
編輯:: 如果您想在超過post_max_size
和upload_max_size
的限制時捕獲由 php 生成的錯誤,您可以看到我的答案: here 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.