当我通过dropzone.js发布包含图像的表单时,我的控制器中出现了无效的参数。我将param名称设置为文件,它在没有dropzone的情况下工作。我无法弄清楚为什么我在使用dropzone时会出现无效的参数错误。有人可以帮忙吗?
脚本
<script>
Dropzone.options.dropkicks = {
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 100,
paramName: "files",
maxFiles: 100
}
var myDropzone = new Dropzone("div#dropkicks", { url: "item-create-post"});
</script>
控制器
foreach(Input::file('files') as $file) {
$filename = time(). $file->getClientOriginalName();
$uploadflag = $file->move('uploads', $filename);
if($uploadflag) {
$uploadedfiles[] = $filename;
$item_image = ItemImage::create(
array(
'item_id' => $item->id,
'image' => $filename
)
);
}
}
悬浮窗
<div class="dropzone" id="dropkicks"></div>
答案 0 :(得分:0)
除非你弄乱dropzone.js
的源代码,否则没有简单的方法可以做到这一点。那是因为该插件旨在用于异步上传文件。虽然dropzone.js有一些变化,但你可以让它工作(我假设你正在使用latest version)。
找到这一行:
document.body.appendChild(_this.hiddenFileInput);
并将其替换为:
_this.hiddenFileInput.setAttribute("name", "files[]");
_this.element.appendChild(_this.hiddenFileInput);
同样找到这一行:
return setupHiddenFileInput();
并评论出来:
// return setupHiddenFileInput();
你的表格应该是这样的:
<!-- Make sure you add enctype="multipart/form-data" to the form tag -->
<form action="/item-create-post" method="post" enctype="multipart/form-data">
<!-- some form fields... -->
<div class="dropzone" id="dropkicks"></div>
<!-- maybe some more form fields... -->
<button type="submit">Submit Form</button>
</form>
您的脚本部分也应如下所示:
Dropzone.options.dropkicks = {
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 100,
paramName: "files",
maxFiles: 100,
// This URL is not really used in your case but it's needed
// because the plugin won't attach itself without one specified
url: '#'
}
同时从脚本中删除此行,因为不需要它。 dropzone将自动附加到“dropzone”类的任何元素:
var myDropzone = new Dropzone("div#dropkicks", { url: "item-create-post"});
答案 1 :(得分:0)
将脚本放在您包含main dropzone.js的位置下方。