Laravel Dropzone无效参数

时间:2014-10-24 12:07:47

标签: laravel laravel-4 dropzone.js

当我通过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>

2 个答案:

答案 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的位置下方。