Laravel Validator仅适用于失败

雷伊恩

我正在尝试验证laravel中的上传文件。

该文件仅接受 xlsx,xls and csv

我有我的控制器的工作代码

  public function project_import_excel(Request $request){
    $validator = Validator::make($request->all(), [
        'file' => 'required|max:5000|mimes:xlsx,xls,csv'
    ]);

    $modal = "active";

    if($validator->passes()){
        return redirect()
        ->back()
        ->with(['success'=>'File uploaded successfully!'])
        ->with('modal',$modal);
    }else{
        return redirect()
        ->back()
        ->with(['errors'=>$validator->errors()->all()])
        ->with('modal',$modal);
    }
}

errors and successblade文件中有这个会议

 @if(session('errors'))
   <div class="alert alert-danger" role="alert">  
        @foreach($errors as $error)
           <li>{{$error}}</li>
        @endforeach
    </div>
    <hr>

 @elseif(session('success'))

    <div class="alert alert-success" role="alert"> 
       {{ session('success') }}
    </div>
    <hr>

 @endif

如果我尝试上传.jpeg或其他任何不是的文件xlsx, xls, or csv

这会给我一条信息

在此处输入图片说明

但是如果我上传一个类似

在此处输入图片说明

成功消息不想显示。我有什么问题if else吗?

问题是,它总是会导致 session('errors')

更新我试图删除此mimes:xlsx,xls,csvsession('success')工作正常。但是,如何验证哪些文件可以接受?

我的HTML代码form

   <div class="modal fade" id="bulkProjMod" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
   <div class="modal-dialog" role="document">
    <div class="modal-content">
    <!--Header-->
     <div class="modal-header">
    <h4 class="modal-title" id="myModalLabel">Upload Projects List</h4>
    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
      <span aria-hidden="true">×</span>
      </button>
     </div>
     <!--Body-->
     <div class="modal-body">
      <div class="container">

        @include('main.projectlistRedirectBack')

        <p class="note note-success">
            <strong>Note upload:</strong> 
            You are trying to upload multiple project records that containas multiple task records. This record will be useful to any transaction
            <br>
            *format : <b><em>xlsx,xls,csv</em></b><br>
            </p>

            <form action="{{ url('/projectlist/project_import_excel') }}" method="POST" enctype="multipart/form-data">

            {{ csrf_field() }}
            <div class="file-field">
                <div class="btn-sm float-left">
                    <span>Choose file</span>
                    <input type="file" name="file" id="file">
                </div>
            </div>
    </div>


    </div>
    <!--Footer-->
    <div class="modal-footer">
    <button type="button" class="btn btn-outline-success" data-dismiss="modal">Close</button>
    <button type="submit" name="submitImport" class="btn btn-success waves-effect" id="upBulkSubmit">Upload</button>
        </form>
     </div>
   </div>
  </div>
  </div>

尝试过这个 dd($validator);

在此处输入图片说明

雷伊恩

@porloscerros提供的链接

Laravel验证器和Excel文件错误

这个答案,解决了我的问题!

   $validator = Validator::make(
    [
        'file'      => $request->file,
        'extension' => strtolower($request->file->getClientOriginalExtension()),
    ],
    [
        'file'          => 'required|max:5000',
        'extension'      => 'required|in:,csv,xlsx,xls',
    ]
    );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章