express(使用 multer)错误:多部分:未找到边界,POSTMAN 发送的请求

新手上路,请多包涵

注意:仅当我在 Postman 中使用表单数据正文表单(这是我必须使用的表单,因为我想在文本字段旁边发送文件)时,我得到:

Error: Multipart: Boundary not found

当我使用 x-www-form-urlencoded 时,一切正常。 ( 当然当 body-parser 用作中间件时

这是请求内容:(由 Postman 制作)

 POST /test HTTP/1.1
Host: localhost:3000
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Cache-Control: no-cache
Postman-Token: 61089a44-0b87-0530-ca03-a24374786bd1

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="test"

a simple word
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="data"

good
------WebKitFormBoundary7MA4YWxkTrZu0gW--

index.js:

 var express = require('express');
var app = express();

var multer = require('multer');
var upload = multer();

app.post('/test', upload.array(), function (req, res, next) {
    console.log(req.body.test);
    console.log(req.body);
});

app.listen(3000, function () {
    console.log('app started');
});

原文由 user9150719 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

我找到了解决方案。我只需要 阻止邮递员发送 Content-Type 标头。所以我只是从请求标头中删除了它。

原文由 user9150719 发布,翻译遵循 CC BY-SA 4.0 许可协议

为了深入了解为什么会发生这种情况,

在任何 HTTP 请求中使用内容类型 multipart/form-data 时,您可以在 Content-Type 规范旁边添加边界信息,例如:

 Content-Type: multipart/form-data; boundary=MyBoundary

您可以将 MyBoundary 替换为您喜欢的任何字符串。

然后,您必须将表单数据 ( name=Abebe&age=5 ) 编码为:

 --MyBoundary
Content-Disposition: form-data; name="name"

Abebe
--MyBoundary
Content-Disposition: form-data; name="age"

5
--MyBoundary--

有关详细信息 ,请阅读此 StackOverflow 问答

原文由 Leone 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题