2016-02-04 4 views
2

Я пытаюсь интегрировать dropzone.js с laravel 5, но я получаю пустой FileBag при попытке dd ($ request).Интеграция dropzone.js с laravel

На мой взгляд:

<form action="create-submit" class="dropzone" enctype="multipart/form-data">...</form> 

Я включил dropzone.css и basic.css, также я включил dropzone.js в моем HTML.

Маршрут:

Route::get('content/create-submit', [ 
    'as' => 'create-submit', 'uses' => '[email protected]' 
]); 

Контроллер:

public function createSubmit (Request $request) { 
    dd($request); 
} 

Я пропускаю что-то?

Есть ли простое решение для интеграции dropzone.js в laravel? Помощь Pls

+1

не знаком с DropZone, но не ваш 'form' элемент нужно' ENCTYPE = «многочастному/форм-данных» 'и ваш маршрут нужен метод 'post', а не' get'? – camelCase

+1

У меня есть эта часть извините, я забыл написать ее. отредактировано – Barba

+0

Вы используете 'POST' или' GET' для загрузки изображений и данных формы? Поскольку 'GET' ограничено ~ 2000 символами, возможно, в сочетании со всеми вашими другими данными формы, что-то усекается? – camelCase

ответ

1

Вы инициализируете dropzone в JS? Он должен делать это автоматически, но иногда он не работает, как ожидалось.

Так что я делаю это.

<div class="dropzone" id="fileUpload" class="clear"> 
</div> 

<script type="text/javascript" defer="true"> 
    var token = "{{ Session::getToken() }}"; 
    Dropzone.autoDiscover = false; 
    var myDropzone = new Dropzone("div#fileUpload", { 
     url: "{{ route('upload') }}", 
     params: { 
      _token: token 
     } 
    }); 
</script> 

Мы также передаем токен CSRF как часть запроса в этом случае.

Я бы предложил использовать инструменты веб-разработчика, чтобы узнать, какой ответ вы получите, когда загрузка будет отправлена ​​на сервер.

UPDATE Код контроллера:

if ($request->hasFile('file') && $request->file('file')->isValid()) { 
     $file = $request->file('file'); 
     dd($file); 
} 
+0

Пробовал ваше решение, но без эффекта. Как проверить, действительно ли файл загружен? В сетевой части инструментов разработчика говорится: image/jpeg: base64 ... и data: image/png: base64 ... когда я помещаю какое-то изображение в dropzone. – Barba

+0

Я добавил кусок кода, который может помочь мой контроллер. Если вы видите, что в сетевой активности и получите 200 OK в качестве ответа, я ожидаю, что он будет работать. –

+0

Не работает. Dropzone показывает индикатор выполнения OK, когда файл загружен и сетевая активность. Затем я нажимаю кнопку «Отправить» в моей форме, и она проходит через if ($ request-> hasFile ('file') && $ request-> file ('file') -> isValid()) и продолжается. – Barba

0

попробовать вручную инициализировать Dropzone как

jQuery(document).ready(function() {  
var myDropzone = new Dropzone("#my-dropzone", { 
       url: "/dropzone", 
       headers: { 
        'x-csrf-token': document.querySelectorAll('meta[name=csrf-token]')[0].getAttributeNode('content').value, 
       } 
       }); 
}); 

и в контроллере

public function dropzone(Request $request) 
    { 
     $img = $request->file('file'); //access dropzone files 
    } 

Кроме того, если нет заголовка маркера не передается вам, вероятно, будет не получают никакого запроса.

Для получения более подробной интеграции с Laravel DropZone вы можете обратиться к этой обучающей программе Integrating Dropzone.js in Laravel 5 applications

Смежные вопросы