javascript - 使用 dropzone.js 中的 uploadMultiple 时出现错误 : Unexpected field.

标签 javascript node.js express dropzone.js multer

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

所以我使用 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")
})

简单的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 中的图像,但看起来好像发出了多个 post 请求,没有 req.files 数组多个图像。我以为会有

最佳答案

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

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

这将阻止任何后缀添加到表单字段。

关于javascript - 使用 dropzone.js 中的 uploadMultiple 时出现错误 : Unexpected field.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44668410/

相关文章:

javascript - 帮助完成 JavaScript 分配

node.js - nodejs aws lambda ffmpeg 命令失败

javascript - Nodejs expressjs 使 npm 包在整个项目中可用

ajax - 无法让 gulp 使用浏览器同步来刷新 Express 服务器和 json

javascript - 如何使用 json 进行搜索并以 html 格式在搜索结果中显示选定的元素详细信息?

某些计算机上未调用 Javascript onclick

node.js - Node.js 中的文件上传只是无限期地上传?

javascript - 为什么 Node js + React 中请求正文为空?

javascript - Axios 响应数据未加载到 Laravel 中的 Vue 组件上

javascript - 如何使用Node-red-dashboard模板 Node 发送功能?