Dropzone发送空

时间:2017-06-20 14:59:03

标签: javascript dropzone.js

我有一个带有以下脚本的dropzone设置:

    <script>
    Dropzone.options.myDropzone = {
        url: 'assets/PHP/createNieuws.php',
        autoProcessQueue: false,
        uploadMultiple: true,
        parallelUploads: 1,
        maxFiles: 1,
        maxFilesize: 1,
        acceptedFiles: 'image/*',
        addRemoveLinks: true,
        createImageThumbnails: true,
        init: function () {
            dzClosure = this; // Makes sure that 'this' is understood inside the functions below.

            this.on("success", function (file, responseText) {
                console.log(responseText);
            });

            // for Dropzone to process the queue (instead of default form behavior):
            document.getElementById("submit").addEventListener("click", function (e) {
                // Make sure that the form isn't actually being sent.
                e.preventDefault();
                e.stopPropagation();
                if (dzClosure.getQueuedFiles().length > 0) {
                    dzClosure.processQueue();
                } else {
                    dzClosure.uploadFiles([{ name: 'nofiles' }]); //send empty
                }
            });

            //send all the form data along with the files:
            this.on("sendingmultiple", function (data, xhr, formData) {
                formData.append("titel", jQuery("#titel").val());
                formData.append("artikel", jQuery("#artikel").val());
            });
        }
    }
</script>

我的服务器上还有一个名为default.png的文件。如果没有检测到图像,我想dropzone指的是default.png。正如您所看到的,我已经尝试过这个解决方案,但没有成功:https://stackoverflow.com/a/41044001/6396380

这会在我的chrome控制台中返回以下错误:

dropzone.js:1497 Uncaught TypeError:无法读取属性&#39; filename&#39;未定义的

我的dropzone版本是5.1.0。

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:2)

这是因为新版本假定file.upload对象有filename。将模拟文件更改为

{ name: 'nofiles', upload: { filename: 'nofiles' } }

应该这样做。

您还应升级到5.1.1,因为它解决了与此相关的错误。

答案 1 :(得分:0)

对于因使用uploadFiles功能而附加方法而导致firefox出错的人,但仍希望得到提交的phat xhr请求以及为您处理的所有内容我建议不要使用

dropzone.uploadFile({ name: 'nofiles', upload: { filename: 'nofiles' } })

使用

dropzone._uploadData([{ upload: { filename: '' } }], [{ filename: '', name: '', data: new Blob() }]);