I have this html:
<input id="input-id" type="file" accept=".mp3, .mp4" name="file" class="form-control"><br> <input type="hidden" id="getfilename" name="uploadedfile" value="">
And this jquery plugin to upload file:
$("#input-id").fileinput({ maxFileSize: 264000, uploadUrl: "{{url('/rate/uploadfile')}}", uploadAsync: true, allowedFileExtensions: ['mp3', 'mp4', 'mpeg', 'flv'], maxFileCount: 1, showUpload: true, dropZoneEnabled: false });
And the route under web middleware group:
Route::post('rate/uploadfile', 'RateController@uploadfile');
And whenever i try to upload the file i got the familiar error:
TokenMismatchException in VerifyCsrfToken.php
Advertisement
Answer
First add this code on your form
<input type="hidden" id="csrf_token" name="_token" value="{{ csrf_token() }}">
this adds a csrf token field on your form using laravel’s csrf_token() function.
Then on your script add this
$("#input-id").fileinput({ maxFileSize: 264000, uploadUrl: "{{url('/rate/uploadfile')}}", uploadAsync: true, uploadExtraData:{'_token':$('#csrf_token').val() allowedFileExtensions: ['mp3', 'mp4', 'mpeg', 'flv'], maxFileCount: 1, showUpload: true, dropZoneEnabled: false });
If you are using http://plugins.krajee.com/file-input this plugin for the file upload then uploadExtraData:{'_token':$("#csrf_token").val()},
this line should add the csrf token as an extra post parameter for the ajax request. Hope this helps.