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