我正在努力使用Postman Chrome扩展程序创建POST多部分/混合请求
这是我的卷曲请求什么效果很好
curl -H "Content-Type: multipart/mixed"
-F "metadata=@simple_json.json; type=application/json "
-F "content=@1.jpg; type=image/jpg" -X POST http://my/api/item -i -v
有趣的回应部分
内容长度:41557
期待:100-continue
内容类型:multipart / mixed;边界= ---------------------------- 8aaca457e117
- 额外的东西不精细transfer.c:1037:0 0
- 具有持久连接的HTTP 1.1或更高版本,支持流水线
当我使用Postman时
我得到了这样的回应
{"message":"Could not parse multipart servlet request;
nested exception is org.apache.commons.fileupload.FileUploadException:
the request was rejected because no multipart boundary was
found","type":"error","status":500,"requestId":"1861eloo6fpio"}
就是这样 - 我希望摆脱那个错误。 如果需要更多信息,请询问:)
答案 0 :(得分:86)
我也遇到了这个问题。简答:从邮递员请求中删除Content-Type
标题。
长篇大论是,多部分请求的Content-Type
应该相当特殊 - 看起来应该是这样的:
multipart/form-data; boundary=----WebKitFormBoundaryzeZR8KqAYJyI2jPL
问题是边界很重要,它需要完全匹配用于分隔上传文件的边界。解决方案很简单:不要指定Content-Type
!当您上传文件时,邮递员会自动为您添加上述内容类型,但边界将填入Postman或Chrome用于分隔多部分内容的任何内容。
您可以使用Chrome开发人员工具(在Postman中)来检查此行为,以检查要添加的Content-Type
标头,以及多部分数据的Content-Disposition
标头,这也是一个痛苦的问题。手动构建(在Postman中不可能)。
注意:我的答案是那些需要multipart/form-data
答案的人的解决方案。 OP正在寻找multipart/mixed
解决方案。在这种情况下,我的答案是不够的。话虽如此,似乎很多人只是想要multipart/form-data
解决方案,所以我会在这里留下我的答案。
答案 1 :(得分:0)
在https://github.com/postmanlabs/postman-app-support/issues/1104
上保留此评论忍者更新:不确定是否对其他人有帮助,但是对于特定情况有一种解决方法,在单个多段POST请求中,您要上传多种文件类型/内容类型。>
Content-Type
设置为multipart/mixed
。form-data
中选择Body
选项。file
并添加键名来添加每个文件。此方法实际上不需要手动指定每个Content-Type
或Content-Disposition
。这里的技巧是将所有相关内容序列化为持久文件类型。如果是文本,则可以忽略“将其转换为文件”步骤:)希望对您有所帮助!