You have to updated your form HTML tag to include
<form method="POST" action="{{ route('posts.store') }}" enctype="multipart/form-data">
@csrf
add file input inside the form
<div class="row mb-3">
<label for="file" class="col-md-4 col-form-label text-md-end">{{ __('File') }}</label>
<div class="col-md-6">
<input id="file" type="file" class="form-control-file @error('file') is-invalid @enderror" name="file"
value="{{ old('file') }}" required autocomplete="file" autofocus>
@error('file')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
Update your Controller
add validation rules
$request->validate([
'title' => 'required',
'body' => 'required',
'file' => 'required|mimes:txt,pdf|max:2097152'
]);
Note: You need to be sure your php settings, php.ini allow for files of the size you ar trying to upload or the form validation will fail or you might get this error Illuminate \ Http \ Exceptions \ PostTooLargeException
//Maximum size of POST data that PHP will accept.
post_max_size = 2048M
Maximum allowed size for uploaded files.
upload_max_filesize = 2048M
Ideally you'd refactor this out of your controller but leaving here for example
- Log in to post comments