Я пытаюсь загрузить файл в laravel. Но каждый раз, когда я нажимаю кнопку отправки, он дает мне внутреннюю ошибку сервера в консоли. Я проверил rote с запросом get, чтобы проверить, работает ли функция контроллера правильно и работает нормально. Может ли кто-нибудь сказать, в чем проблема? вот мои примеры кода
код маршрута
Route::post('/storefile','PublicationController@storeFile');
контроллер
public function storeFile(Request $request){ if($request->ajax()){ echo "got"; } else echo "not ajax"; }
Посмотреть
@extends('layouts.app') @section('stylesheet') <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> <link type="text/css" href="/css/bootstrap-tagging.css" rel="stylesheet"> @endsection @section('content') <div class="validation-system"> <div class="validation-form"> <form id="test-form" action="/storepublication" method="post" enctype="multipart/form-data" > {!! csrf_field() !!} <div class="col-md-3 form-group1"> <label class="control-label">Upload Paper</label> <input type="file" name="file" id="paper"> </div> <div class="col-md-3 form-group1"> <input type="submit" id="submit" name="submit" class="btn btn-primary" value="Add"> </div> </form> </div> </div> @endsection @section('scripts') <script> $(document).ready(function() { $("#test-form").submit(function (event) { event.preventDefault(); var file_data = $('#paper').prop('files')[0]; var form_data = new FormData(); form_data.append('file', file_data); $.ajax({ url: "/storefile", type: "post", data: form_data, processData: false, contentType: false, success: function (res) { document.getElementById("response").innerHTML = res; } }); }); }); </script> @endsection
Попробуйте заменить это
var file_data = $('#paper').prop('files')[0];
этим
var file_data = $('#paper').files[0];