在Laravel中,我能够成功地使用户在页面上上传文件,但是我想知道在提交页面之前,是否有办法向该用户显示错误。太大。诸如“您选择上传的文件为25MB。请使其小于20MB。”
有没有可以处理此问题的软件包?
答案 0 :(得分:1)
在客户端验证文件大小。 (提及这一点是因为您提到要在提交表单之前提醒该错误。) 检查下面使用jQuery的示例代码:
$(document).ready(function() {
$('input[type="file"]').change(function(event) {
var fileSize = this.files[0].size;
var maxAllowedSize = //add your value here;
// check the file size if its greater than your requirement
if(size > maxAllowedSize){
alert('Please upload a smaller file');
this.val('');
}
});
});
服务器端的验证(您可以根据要允许的文件类型更改mime类型):
<?php
public function store(Request $request){
$request->validate([
'file_input_name' => 'file|max:25000|mimes:jpeg,bmp,png',
// add validations for other fields here
]);
}
有关更多信息,请检查documentation
答案 1 :(得分:0)
您不需要包即可执行此操作,可以创建Request
类或使用验证器:
1。创建一个Request
类:
运行命令php artisan make:request FileRequest
然后,在App\Http\Requests\FileRequest
下生成的文件上执行以下操作:
authorize
方法以返回true
而不是false
。rules
方法下,您返回验证规则: return [
"file_input" => "max:20480", //If your input type's file name is "file_input"
];
根据documentation,max rule
验证用户输入的文件大小不会超过指定的千字节数。
2。您还可以在控制器方法中创建验证器:
use Validator;
public function store(Request $request)
{
$validator = Validator::make($request->only('file_input'), [
'file_input' => 'max:20480',
]);
if ($validator->fails()) {
return redirect()
->route('your.route.name')
->withErrors($validator)
->withInput();
}
// other code here
}