我目前有一个带有文件上传的表单,在该文件上传中,我有一个验证,可以确保它是图像或文档,还可以确保大小不能超过 2M >:
'insurence_document' => 'required|mimes:jpeg,png,jpg,pdf,doc,docx:|max:2048',
但是我不明白,我设置的验证规则应该阻止它,即使它是 .zip!也不是正确的mime类型。但是,如果我上传的是较小的 .zip ,则可以正常运行。因此,问题似乎出在更大的文件上。
我出错,例如警告:
24479807字节的POST内容长度超过了8388608的限制 第0行上的“未知”中的字节数
与上述错误无关,与laravel验证不适用于大型上传文件有关。我希望文件大小仅保持2MB。
我希望仅通过laravel验证来完成
答案 0 :(得分:0)
8388608字节为8M ,默认文件上传大小为 2MB
打开 php.ini 文件。在 php.ini 文件中找到这些行,并将其替换为以下数字:upload_max_filesize = 64M
保存所做的更改,然后尝试再次上传该文件。
您可以在 xampp / php / php.ini (Windows用户)文件中找到该路径,并且必须重新启动服务器
答案 1 :(得分:0)
我将为此创建一个自定义的Laravel验证规则,以弄清为什么它会传递Zip文件和2mb文件大小。在那里,您将能够手动处理验证,并查看为什么通过您要设置的规则。如果您知道了,我相信您将能够找到发生这种情况的原因。
答案 2 :(得分:0)
在您的 php.ini 文件中使用#include <somelib/somelib.h>
#include <nlohmann/json.hpp>
#include <ifstream>
int main() {
auto c = somelib::read_configuration("config.json");
nlohmann::json j;
std::ifstream i("another.json");
i >> j;
return 0;
}
答案 3 :(得分:0)
如果超过php限制,则服务器将在上传到达您的验证器之前拒绝上传。这样,它将不会产生验证消息,但是php将引发错误。
因此,即使文件类型与您在mime
上设置的rule
不同,您也不会收到该rule
的消息,因为它无法到达。
另一种情况是,如果您在required
上设置了rule
并且文件超出了php限制,那么您将收到来自validaiton的消息:The field is required
。发生这种情况的原因与前面提到的相同,因为文件未到达验证器,因此验证器会将输入视为空白字段,并抛出required
消息。
解决方案是在您的php.ini中更改post_max_size
和upload_max_filesize
。
祝您编程愉快!
编辑::如果您想在超过post_max_size
和upload_max_size
的限制时捕获php产生的错误,您可以看到我的答案:here。