Ajax 拉维尔';s文件验证使文件符合要求

Ajax 拉维尔';s文件验证使文件符合要求,ajax,laravel,performance,laravel-validation,laravel-5.6,Ajax,Laravel,Performance,Laravel Validation,Laravel 5.6,我有一个表单,其中有一些输入,还有一个文件输入一切正常,但有一个奇怪的问题 以下是我的验证代码: 问题是我没有为文件设置必需的,但我不知道为什么在提交表单时会显示: 文件必须是以下类型的文件:jpeg、png、doc、docs、pdf 实际上,我想文件是可选的 我有时试过: 'file' => 'sometimes|max:2000|mimes:jpeg,png,doc,docs,pdf', 但它不起作用。 谢谢你的建议 更新: 我的Ajax请求: 和我的文件输入: 发送文件 浏览

我有一个表单,其中有一些输入,还有一个
文件输入

一切正常,但有一个奇怪的问题

以下是我的验证代码:

问题是我没有为
文件设置
必需的
,但我不知道为什么在提交表单时会显示:
文件必须是以下类型的文件:jpeg、png、doc、docs、pdf
实际上,我想
文件
是可选的

我有时试过

'file' => 'sometimes|max:2000|mimes:jpeg,png,doc,docs,pdf', 
但它不起作用。
谢谢你的建议

更新:

我的Ajax请求:

和我的文件输入:


发送文件

浏览 没有选择任何文件
您可以按如下方式执行

$validator = \Validator::make($request->all(), [
        'name' => 'required|max:25|min:3',
        'email' => 'required|email|max:35|min:5',
        'phone' => 'required|max:15|min:7',              
    ]);

if($request->file){
    $validator = \Validator::make($request->all(), [
            'file' => 'max:2000|mimes:jpeg,png,doc,docs,pdf',               
        ]);
}

使用
nullable
规则

文件:

这给了你:

'file' => 'nullable|max:2000|mimes:jpeg,png,doc,docs,pdf', 

嗯。。你的验证是正确的。。您是否检查了请求中的文件是否为空?尝试用
nullable
替换
有时
,我忘了说我使用了Ajax,当我从Ajax的数据中删除
文件
时,问题就解决了!/谢谢,我尝试了
nullable
,但没有成功。@zerone我更新了我的问题。
<div class="form-group">
    <label for="file">send file</label>
    <br>
    <label id="browse-label" for="file"><i class="fa fa-upload" aria-hidden="true"></i>browse
        <input type="file" id="file">
    </label>
    <span id="filename">no file chosen</span>
</div>
$validator = \Validator::make($request->all(), [
        'name' => 'required|max:25|min:3',
        'email' => 'required|email|max:35|min:5',
        'phone' => 'required|max:15|min:7',              
    ]);

if($request->file){
    $validator = \Validator::make($request->all(), [
            'file' => 'max:2000|mimes:jpeg,png,doc,docs,pdf',               
        ]);
}
'file' => 'nullable|max:2000|mimes:jpeg,png,doc,docs,pdf',