【问题标题】:Handling multipart form data with express JS-values from text field are empty in req.body使用来自文本字段的快速 JS 值处理多部分表单数据在 req.body 中为空
【发布时间】:2020-04-13 15:38:58
【问题描述】:

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

在此,我还要求他们上传图片。但是要上传图片,我需要将表单的enctype设置为multipart/form-data。图像被上传,但问题是没有记录其他数据。

这是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) 返回一个空对象。没有multipart/form-data,图像不会上传,但其余数据会被记录。

我该如何解决这个问题?

【问题讨论】:

    标签: html node.js express multipartform-data multer


    【解决方案1】:

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

    【讨论】:

    • 是的,我也想过类似的事情。我解决它的方法是创建 2 个表单,1 个用于图像,另一个用于文本字段。然后我做了一个按钮并在点击按钮时在JS中调用一个函数,首先提交图像表单,然后稍微延迟大约4秒后,提交第二个表单
    • 不错。或者您可以只对图像和文本字段使用 ajax。我已经使用 React 有一段时间了,因为 React 中的每个请求都是 ajax,所以我现在对 ajax 更满意了。在使用 Express 车把之前,我对此进行了真正的修复。很高兴我能帮上忙:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    相关资源
    最近更新 更多