【问题标题】:Error: Unexpected field. using uploadMultiple from dropzone.js错误:意外的字段。使用 dropzone.js 中的 uploadMultiple
【发布时间】:2017-11-23 21:41:39
【问题描述】:

我希望有一种方法,让用户可以选择要发送的带有评论的图像。

所以我使用 dropzone.js 。在一个请求中发送多个图像似乎有问题。我认为 req.files 将包含一个文件数组,但没有发生。现在我看到了一个问题,因为 dropzone 添加了[],其中包含名称参数的索引。

将图像添加到 dropzone 时,我在请求负载中看到类似这样的内容:

------WebKitFormBoundaryJOpGX6kWaoknKhIN
Content-Disposition: form-data; name="images[0]"; filename="data.png"
Content-Type: image/png


------WebKitFormBoundaryJOpGX6kWaoknKhIN
Content-Disposition: form-data; name="images[1]"; filename="loginButton.png"
Content-Type: image/png


------WebKitFormBoundaryJOpGX6kWaoknKhIN--

我觉得 [0][1] 给我带来了麻烦

服务器:

app.post("/files" , upload.array("images"), (req, res) =>{
    console.log("hit here")
    console.log("req.file :", req.file)
    // console.log(req.body)
    console.log(req.files)
    res.send("ok")
})

simple multer:我之前有更复杂的一个

var upload = multer({ dest: "./uploads" })

前端:

<script src = "/dropzone.js"></script>
<script>
    $(function(){
        Dropzone.autoDiscover = false;
        var myDropZone = new Dropzone(".dropzone", {
            url : "/files",
            // uploadMultiple : true,

            autoProcessQueue : false,
             parallelUploads: 5,
            paramName: "images",
            uploadMultiple: true,
            init : function(){
                this.on("success", function(){
                    // alert("success")
                })
                this.on("sendingmultiple", function(){
                    console.log("SENDING MULTIPLE");
                })
                this.on("errormultiple", function(files, response){
                    console.log("ERROR");
                    console.log(response);
                    console.log(files);
                })
            } 
        })
            $("#skip, #login").on("click", function(e){
                myDropZone.processQueue();
            })
    })

</script>
<div class = "dropzone"></div>
   <div id = "skip"> skip </div>
   <div id = "login">login</div>

当我摆脱 uploadMultiple: true, 时,我得到了 FS 中的图像,但看起来好像发出了多个帖子请求,但没有包含多个图像的 req.files 数组。我以为会有

【问题讨论】:

    标签: javascript node.js express dropzone.js multer


    【解决方案1】:

    您应该能够通过为 paramName 指定函数而不是字符串来强制命名:

    paramName: function() { return 'images'; },
    

    这将防止任何后缀被添加到表单字段中。

    【讨论】:

    • 这看起来很不错。我以为我清楚地遵循了文档,这让我陷入了困境。我不知道我应该使用一个函数。现在我在files 中看到了该数组,稍后我会在进行更多测试时接受这个答案。谢谢。这很有帮助。
    • 我遇到了这个问题,不知道如何解决。谢谢!
    • 我尝试了这个方法,但仍然失败并返回“意外字段”。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 2018-04-13
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 2018-07-28
    • 2018-08-12
    • 1970-01-01
    相关资源
    最近更新 更多