使用来自文本字段的 Express JS 值处理多部分表单数据在 req.body 中为空

Handling multipart form data with express JS-values from text field are empty in req.body

我有一个项目,我在其中使用基本注册页面供用户输入他们的详细信息。 我在后端使用 express JS

在此,我也请他们上传一张图片。但是对于要上传的图片,我需要将表格的enctype设为multipart/form-data。图像已上传,但问题是记录了其他数据的none。

这是html:

<form action="/create"  method="POST" class="profile" enctype="multipart/form-data">
        <input type="file" name="profile_image" class="img_upload" /><br><br><br>
        <div class="name_age" >
            <input type="text" name="name" class="name" placeholder="Full name">
            <b class="age"> Age </b>
            <input type="date" name="age" class="age"/> 
        </div>
<input type="submit" name="submit" value="Update Profile"  class="button"/>
</form>

这是处理它的 expressJS 代码:

app.post('/create',(req,res)=>{
    var d = req.body 
    console.log(d)

    upload(req,res,function(err){   //this is a multer function to store the image  
        if(err)
            res.end(err)
        else{       
            res.end('success')
        }
    })
})

console.log(d) returns 一个空对象。没有 multipart/form-data 图像不会上传,但会记录其余数据。

如何解决这个问题?

实际上我几个月前在我的项目中也尝试过这个,并且在 busboy 和 multer 中遇到了类似的问题。你可以在按钮上有一个 onclick 事件,你可以在其中设置 3.4 秒的 setTimeout(上传图像和发送响应通常需要的时间)并在 ajax 中发送正文中的文本字段请求您的 url /create。或者只是放弃使用 <form> 标签的 post 请求,只发送图像以及 ajax 请求中的文本字段。希望对你有帮助