Я работаю над проектом, который включает загрузку файлов. Я использую DropzoneJS и Laravel для этого проекта. Кажется, что все работает нормально, я правильно включил js и css-файлы, также форма появляется, как в примере, но проблема в том, что часть загрузки! Отброшенные файлы показывают, что индикатор выполнения переходит на 100%, но как только он достиг, он возвращает ошибку, подобную этой …
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Call to a member function getClientOriginalName() on a non-object","file":"C:\\wamp\\www\\localsite\\app\\controllers\\AssetsController.php","line":121}}
Я знаю, что процесс загрузки работает ine becouse, когда я return var_dump(Input::file('file));
Я получаю массив входных данных …
..но…
Когда я проверяю файл как этот Input::hasFile('photo')
кажется, что файл является emty, но имеет форму массива.
это маршрут
Route::post('create/album','AssetsController@album');
Это контроллер
public function album() { $file = Input::file('file'); $destinationPath = 'uploads'; $filename = $file->getClientOriginalName(); $uploadSuccsess = Input::file('file')->move($destinationPath, $filename); if( $uploadSuccsess ) { return Response::json('success', 200); } else { return Response::json('error', 400); } }
Это HTML
<form action="http://localhost/create/album" enctype="multipart/form-data" id="post-form-dropzone" class="dropzone"> </form> <button type="submit" id="status-post-form-submit-btn" class="btn btn-sm btn-primary btn-post pull-right">Post</button>
Это JS
Dropzone.options.PostFormDropzone = { // The camelized version of the ID of the form element acceptedFiles: "image/*", // Accept images only autoProcessQueue: false, uploadMultiple: true, parallelUploads: 100, maxFiles: 60, addRemoveLinks: true, // The setting up of the dropzone init: function() { var myDropzone = this; // First change the button to actually tell Dropzone to process the queue. $("#status-post-form-submit-btn").click(function(e) { e.preventDefault(); e.stopPropagation(); myDropzone.processQueue(); }); } }
Я пытался часами, но я не могу найти решение.
Заранее спасибо.
наконец, понял, как это исправить, вот что заставило это изменить мой измененный контроллер
$file = Input::file('file'); Image::make($file[0]->getRealPath())->resize(540, null, true)->save('assets/example.png');
Если кто-то спрашивает, откуда взялись эти методы манипуляции с изображением, это класс iam, используя http://intervention.olivervogel.net/image/getting_started/laravel
Надеюсь, это поможет кому-то в fututre