用于Multipart / form-data的POSTMAN

时间:2017-05-25 14:13:33

标签: spring web-services rest multipartform-data postman

如何将POSTMAN用于Multipart / form-data,它具有自定义标题,用于测试我的控制器,该控制器将2个文件作为参数(public ... controller( MultipartFile[] files))?

POST .... HTTP/1.1
.
.
.
---boundary123
Content-type:application/octet-stream
content-Disposition: form-data filenale="abc.txt" name="someuniquename"
[paylaod content](this is in xml format)
---boundary123
content-type:application/json
content-Disposition:form-data name="metadata"
{ID:"999"}
---boundary123

4 个答案:

答案 0 :(得分:14)

enter image description here

在邮递员中使用 ' Multipart / form-data' 的步骤

  1. 创建新标签
  2. 插入控制器Url
  3. 将方法类型设置为POST
  4. 正文标签下,选择表单数据
  5. 对于作为文件的每个键,将键入文件

答案 1 :(得分:2)

我希望这将有助于其他人避免长时间的调试工作。底线是,对于某些分段上传,您只是​​运气不好。例如,如果您需要做多部分/相关的工作,并且需要在Content-Type的Header中表达出来,Postman就帮不了您。主要原因是Postman仅会生成随机边界,即使您添加自己的边界也是如此。困难的部分是Postman将声明在Postman控制台中使用您的边界,但实际上将在呼叫中使用其他边界。因此声明的标头边界与实际使用的边界不匹配。

这是一个来自Postman的请求的示例,可以在Postman Console和Fiddler中查看。如您所见,Fiddler显示Postman实际上正在发送随机边界,而Postman声称使用了所提供的边界。

Fiddler vs Postman rendering of raw request

我真的希望他们在Postman中解决此问题。至少要向其显示Postman Console,即使他们没有解决根本问题。对于大多数API来说,它是一个很好的工具,但是如果您要尝试安装DICOM服务器并遵守该规则,那么您将不走运。

答案 2 :(得分:0)

这是邮递员一个长期已知的问题。如果您进行的设置涉及一个部分说文本或JSON,而另一个部分说图片,则可能会有些棘手。关键是将Content-Type标头设置为multipart/mixed,然后将所有内容转换为文件。如果是文本,则可以忽略“将其转换为文件”步骤:)

https://github.com/postmanlabs/postman-app-support/issues/1104

上保留此评论

忍者更新:不确定是否对其他人有帮助,但是对于特定情况有一种解决方法,在单个多段POST请求中,您要上传多种文件类型/内容类型。

  1. 将标题Content-Type设置为multipart/mixed
  2. form-data中选择Body选项。
  3. 将所有项目转换为文件。字符串内容应成为文本文件等。
  4. 通过选择file并添加键名来添加每个文件。

此方法实际上不需要手动指定每个Content-TypeContent-Disposition。这里的技巧是将所有相关内容序列化为持久文件类型。希望能帮助到某人!

答案 3 :(得分:0)

This video介绍了如何使用邮递员过帐多部分/表单数据。我上传了一个文本文件,其内容类型为multipart / form-data。