簡體   English   中英

上傳文件大小為 laravel5.4

[英]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_sizeupload_max_filesize

快樂編碼!

編輯:: 如果您想在超過post_max_sizeupload_max_size的限制時捕獲由 php 生成的錯誤,您可以看到我的答案: here

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM