将普通表单与带有dropzone的文件输入相结合

时间:2015-01-16 20:01:03

标签: javascript file-upload dropzone.js

我在组合"正常"时遇到了问题。形式与dropzone。我有一个带有文本输入,文件输入和dropzone部分的表单。我想立刻发布所有内容。因此,我手动创建了dropzone字段,我禁用了dropzone的autoProcessQueue功能并绑定了提交按钮的onClick

<form action="/Exhibits/Create" enctype="multipart/form-data" id="newExhibitForm" method="post">
    <input id="Exhibit_Name" name="Exhibit.Name" type="text"
    <input id="Exhibit_Description" name="Exhibit.Description" type="text">

    <input id="ModelFile" name="ModelFile" type="file">
    <input id="TextureFile" name="TextureFile" type="file">

    <div id="dropzonePreview" class="dropzone-previews form-control dz-clickable">
        <div class="dz-message">Drag&drop</div>
    </div>

    <input type="submit" value="Create" class="btn btn-default">
</form>

JS部分:

var photoDropzone = new Dropzone("#newExhibitForm", {
    url: $('#newExhibitForm').attr("action"),
    autoProcessQueue: false,
    uploadMultiple: true,
    parallelUploads: 10,
    maxFiles: 10,
    previewsContainer: '#dropzonePreview',
    clickable: '#dropzonePreview',

    // The setting up of the dropzone
    init: function () {
        var myDropzone = this;

        var submitButton = document.querySelector('input[type=submit]');
        myDropzone = this; // closure

        submitButton.addEventListener("click", function (e) {
            e.preventDefault();
            e.stopPropagation();
            if (myDropzone.getQueuedFiles().length === 0) {
                $('#newExhibitForm').submit();
            }
            else {
                myDropzone.processQueue();
            }
        });
    }
});

当我通过单击提交按钮提交表单时,在服务器端功能中有dropzone文件,文本输入,但文件输入不发送。

有没有办法让它按照我在开头描述的方式工作?

的问候,
康拉德

1 个答案:

答案 0 :(得分:0)

很抱歉,当时每个文件都是单独上传的。因此,您需要将文件单独存储在服务器上,然后当dropzone发出complete事件时,您将发送其余的输入字段。