我了解到需要修改php.ini
中的值才能设置上传文件的限制。但是,我处于无法触及php.ini
的情况。
让我简要解释一下这个问题。
<input type="file" name="thumbnail" accept="image/*">
我试图获取thumbnail
并将其置于控制器中。
if($this->request->hasFile('thumbnail')){
$file = $this->request->file('thumbnail');
//Other tasks
}
如果文件大小超过某个点,我想阻止它并显示警告。但是,显然,如果上传的文件超出限制, request->hasFile()
会返回false,即使它实际上是真的。
(我在dd()
)
hasFile()
可能无法捕捉到此类错误,因为它根本无法捕捉到它。
任何建议都将受到赞赏。
答案 0 :(得分:2)
使用验证规则max
$validator = Validator::make($request->all(), [
...
'thumbnail' => 'max:30000', // kilobytes
...
]);
答案 1 :(得分:1)
首先,请确保您的表单使用multipart/form-data
enctype。
<form action="/upload-image" method="post" enctype="multipart/form-data">
<input type="file" name="thumbnail" accept="image/*">
<input type="submit">
</form>
要获取文件大小,您可以使用UploadedFile对象的getClientSize()
函数。
因此,要限制大小并显示警告,您可以执行以下操作:
if ($this->request->file('thumbnail')->getClientSize() > 5){
return redirect()->back()->withErrors(['thumbnail', 'File is too big. Limit is 5MB.']);
}
然后在视图中打印错误。
答案 2 :(得分:0)
您是否检查过验证规则?
验证文件
规则:
size:value
验证字段的大小必须与给定值匹配。对于字符串数据,value对应于字符数。对于数字数据,value对应于给定的整数值。对于文件,size对应于文件大小(以KB为单位)。