我正在开发一个Laravel 5.5项目,它给了我一些问题......其中一个就是当我上传一些图片时它会返回一个错误:“文件必须是图像 “在控制器中使用以下代码。
public function update(\App\Property $property, Request $request)
{
$rules = [
'images.*' => 'mimes:image|max:2048',
'zone' => 'required'
];
$messages = [
'images.mimes' => 'The file must be an image', // in my file that is a translated of the original message
'images.max' => 'The images sizes must be under 2MB',
];
$validator = Validator::make($request->all(), $rules, $messages);
if($validator->fails()) {
parent::message(
$validator->errors(),
'¡Error!',
'error'
);
return back()->withInput();
}
以防万一:
我正在读一些有同样问题的人,但就我而言,我有平常
<form method="POST action="..." enctype="multipart/form-data">
我对请求提出了dd($request->files)
,但我上传的所有图片似乎都是图片。
此外,我尝试使用迭代方法如下:
if($request->hasFile('images')) {
foreach ($images as $image)
{
$validator = Validator::make(
[ 'image' => $image ],
[ 'image' => 'mimes:jpeg,png,jpg,gif,svg|max:2048' ],
[
'image.mimes' => 'Images must have format (JPEG, PNG, JPG, GIF or SVG)',
'image.max' => 'Each image must be under 2MB'
]);
if($validator->fails()) {
parent::message(
$validator->errors(),
'¡Error!',
'error'
);
return back()->withInput();
}
}
}
但是当图像太大于2MB时,请求甚至不会通过if($request->hasFile() function
。
我想要所有图像的一般错误而不是验证每个图像,这可能吗?顺便说一下Laravel Documentation它没有先前的迭代方法。
答案 0 :(得分:3)
我也试图弄清楚这一点,自 Laravel 5.5 以来,symphony 似乎已经更新。在 Laravel 8 上,我可以告诉您,以下设置组合修复了我遇到的错误,产生了与您相同的错误类型: 在您的表格中: 确保您的表单具有
<form method="POST action="..." enctype="multipart/form-data">
在您的验证器中:
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
答案 1 :(得分:0)
如果您在表单中使用 Laravel Collectives,那么您可以实现如下所示的 enctype:
{!! Form::open([‘action’ =>’ProfilesController@update’,
‘method’ => ‘POST’, ‘enctype’ => ‘multipart/form-data’]) !!}