1
フォームはファイルアップローダです。 Mimeタイプで検証が失敗した場合、Laravelはエラーを表示しません。入力に失敗した場合は、アップロードページにエラーが表示されます。それは検証が正しいように見えますが、ファイルが間違っていてもファイルをアップロードしないので、MIMEタイプが間違っているとエラーが返ってくるだけです。LaravelフォームMIMEタイプの検証
ルートを修正
Route::post('/newfile', function (Request $request) {
$validator = Validator::make($request->all(), [
'userFile' => 'required|mimes:zip',
]);
if ($validator->fails()) {
return redirect('/upload')
->withErrors($validator);
} else {
ビュー
@include('errors.errors')
<form action="{{ url('newfile') }}" method="POST" id="uploadForm" class="form-horizontal" enctype="multipart/form-data">
{!! csrf_field() !!}
<div class="input-group">
<span class="input-group-btn">
<span class="btn btn-primary btn-file">
Browse… <input name="userFile" id="userFile" type="file" />
</span>
</span>
<input type="text" class="form-control" readonly>
</div>
<div>
<button type="submit" id="btnSubmit" value="Submit" class="btn btn-success">Upload</button>
<div class="progress">
</div>
</div>
</form>
エラー
@if (count($errors) > 0)
<!-- Form Error List -->
<div class="alert alert-danger">
<strong>Whoops! Something went wrong!</strong>
<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif