Laravel多文件上传验证

时间:2017-07-19 10:42:45

标签: php laravel validation file-upload

我目前正在以表格形式工作。

我在多文件上传验证方面遇到了一些问题。我在表单中只有一个字段允许多个文件上传。

<input type="file" name="file[]" multiple="multiple">

这是我的验证,

$this->validate($request, [
    'file' =>'required',
    'file.*' => 'required|mimes:pdf,jpeg,png |max:4096',
],
 $messages = [
            'mimes' => 'Only PDF, JPEG, PNG are allowed.'
        ]
);

验证工作正常,但我无法在刀片文件中显示错误消息。

以下是我的尝试。

@if($errors->has('file'))
    <span class="help-block">
        <strong>{{$errors->first('file')}}</strong>
    </span>
@endif

如果没有上传文件,则显示错误。

假设我上传了以下文件,

abc.jpg
abc.html
abc.pdf

当mimes类型验证抛出错误时,我无法显示错误消息。 在这种情况下,错误被抛出为$error->first(file.1),因为验证在索引1处失败

此索引可以是根据上传文件的任何索引,$error->first(file.*)也不起作用。

当我仅从表单添加无效文件后显示所有错误时,我遇到了这些错误。

 Only PDF, JPEG, PNG are allowed.
 The type field is required. 
 The number field is required.
 The expiry date field is required. 

任何人都有这个想法。任何帮助表示赞赏。

谢谢,

3 个答案:

答案 0 :(得分:1)

您可以使用检查图像。

$errors->has('file.*')

答案 1 :(得分:1)

尝试这样验证

'file.*.mimes' => 'Only PDF, JPEG, PNG are allowed.',

答案 2 :(得分:0)

这不是好方法,但对我来说这很好。

我有验证规则

'file' =>'required',
'file.*' => 'required|mimes:pdf,jpeg,png |max:4096',

并且,错误消息

'file.*' => 'Only PDF, JPEG, PNG are allowed.'

由于我只有一个文件上传字段,我刚刚在所有消息列表中检查了此错误消息,然后显示如下。

<input type="file" name="file[]" multiple="multiple">
@foreach($errors->all() as $error)
    @if($error=="Only PDF, JPEG, PNG are allowed.")
            <span class="help-block"><strong>{{$error}}</strong></span>
    @endif
@endforeach

感谢所有人,