使用mime验证Laravel文件Post - Word文件


Using Mimes for Validating Laravel File Post - Word File

我有一个表单,我张贴文件。我试图使用验证只接受word文档。我试着使用mime类型,但似乎不工作,我无法发现我的错误。

<form action="" method="post">
   <div class="form-group{{ $errors->has('myFile') ? ' has-error' : '' }}">
      <div class="col-xs-12">
           <div class="form-material">
               <input class="form-control" type="file" id="myFile" name="myFile">
               <label for="myFile">MyFile</label>
               @if ($errors->has('myFile'))
                    <div {{ $errors->first('myFile') }}</div>
               @endif
           </div>
      </div>
   </div>
</form>

这个帖子成功,我在我的控制器中收到它。

在我的控制器中,我尝试验证它,但是它总是返回错误,即使文件是'.doc'格式。

public function myController(Request $request) {
     $validator = MyValidations::myFormValidator($request->all());
     if ($validator->fails()) {
          $this->throwValidationException(
               $request, $validator
          );
     }
     ...
}

和验证器:

public static function myFormValidator($data) {
    return Validator::make($data, [
        'myFile' => 'required|mimes:application/msword'
        // I also tried
        // 'myFile' => 'required|mimes:doc,docx'
    ]);
}

编辑:我在SO上看到过一些帖子,关于有一个文件config > mimes.php,但我没有在Laravel 5.3

实际上,验证代码并没有什么问题。问题是您的表单没有正确提交文件。

将适当的enctype添加到您的表单中,如下所示:

<form action="" method="post" enctype="multipart/form-data">

还要确保获得正确的验证语法(但我认为您知道这一部分)。

'myFile' => 'required|mimes:doc,docx'
'myFile' => 'required|mimetypes:application/msword'

试试这个:

'myFile': 'required|mimes:doc,docx'