使用Mimes验证Laravel文件后 - Word文件

时间:2016-11-16 17:32:06

标签: php laravel validation laravel-5 html-form-post

我有一个发布文件的表单。我试图使用验证只接受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上找到它

2 个答案:

答案 0 :(得分:2)

实际上,验证码没有任何问题。问题是您的表单没有正确提交文件。

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

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

还要确保正确的语法验证(但我认为你知道这一部分)。使用以下两种方法之一:

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

答案 1 :(得分:-1)

试试这个:

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