我尝试将dropzone.js与laravel 5集成,但在尝试dd($request)时得到空的FileBag。
在我看来:
<form action="create-submit" class="dropzone" enctype="multipart/form-data">...</form>我包含了dropzone.css和basic.css,也在我的超文本标记语言中包含了dropzone.js。
路由:
Route::get('content/create-submit', [
'as' => 'create-submit', 'uses' => 'ContentController@createSubmit'
]);控制器:
public function createSubmit (Request $request) {
dd($request);
}我是不是遗漏了什么?
有没有简单的解决方案将dropzone.js集成到laravel?请帮帮忙
发布于 2016-02-05 00:17:07
你在JS中初始化dropzone吗?它应该会自动执行此操作,但有时它不会像预期的那样工作。
所以我要这么做。
<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令牌作为请求的一部分进行传递。
我建议使用web开发工具来查看当上传被发送到服务器时会得到什么响应。
更新控制器代码:
if ($request->hasFile('file') && $request->file('file')->isValid()) {
$file = $request->file('file');
dd($file);
}发布于 2017-06-03 23:54:14
尝试手动初始化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
https://stackoverflow.com/questions/35203218
复制相似问题