Non-ajax post using Dropzone.js

后端 未结 4 1316
一生所求
一生所求 2020-12-10 11:21

I\'m wondering if there\'s any way to make Dropzone.js (http://dropzonejs.com) work with a standard browser POST instead of AJAX.

Some way to inject the inputs type=

4条回答
  •  温柔的废话
    2020-12-10 12:06

    For future visitors I've added this to dropzone options:

    addedfile: function (file) {
                var _this = this,
                        attachmentsInputContainer = $('#attachment_images');
                file.previewElement = Dropzone.createElement(this.options.previewTemplate);
                file.previewTemplate = file.previewElement;
                this.previewsContainer.appendChild(file.previewElement);
                file.previewElement.querySelector("[data-dz-name]").textContent = file.name;
                file.previewElement.querySelector("[data-dz-size]").innerHTML = this.filesize(file.size);
                if (this.options.addRemoveLinks) {
                    file._removeLink = Dropzone.createElement("" + this.options.dictRemoveFile + "");
                    file._removeLink.addEventListener("click", function (e) {
                        e.preventDefault();
                        e.stopPropagation();
                        if (file.status === Dropzone.UPLOADING) {
                            return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function () {
                                return _this.removeFile(file);
                            });
                        } else {
                            if (_this.options.dictRemoveFileConfirmation) {
                                return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function () {
                                    return _this.removeFile(file);
                                });
                            } else {
                                return _this.removeFile(file);
                            }
                        }
                    });
                    file.previewElement.appendChild(file._removeLink);
                }
                attachmentsInputContainer.find('input').remove();
                attachmentsInputContainer.append(Dropzone.instances[0].hiddenFileInput).find('input').attr('name', 'files');
                return this._updateMaxFilesReachedClass();
            },
    

    This is default implementation of dropzone's addedfile option with 3 insertions.

    Declared variable attachmentsInputContainer. This is invisible block. Something like

    
    

    Here I store future input with selected images Then in the end of function remove previously added input(if any) from block and add new

    attachmentsInputContainer.find('input').remove();
    attachmentsInputContainer.append(Dropzone.instances[0].hiddenFileInput).find('input').attr('name', 'files');
    

    And now, when you send form via simple submit button, input[name="files"] with values will be send.

    I've made this hack because I append files to post that maybe not created yet

提交回复
热议问题