POSTMAN 用于 Multipart/form-data。

30
如何使用POSTMAN进行multipart/form-data的测试,其中包含自定义标题,以测试接受两个文件参数(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

终于!显然这个问题现在已经被修复了:https://github.com/postmanlabs/postman-app-support/issues/1104 - Adam Gerard
4个回答

66

enter image description here

使用Postman的'Multipart/form-data '的步骤

  1. 创建一个新标签页
  2. 插入控制器URL
  3. 将方法类型设置为POST
  4. Body选项卡下,选择form-data
  5. 对于每个文件键,将Value类型设置为File

3
我需要输入自定义标头和分界线吗? - phalco
@phalco,您需要自定义哪种类型的标题?是针对内容类型的吗? - Afridi
它包括主机,内容类型(multipart/form-data),边界和负载计数也在头部。 - phalco
您可以添加自定义标头,但是就内容类型而言,无需添加。主机已包含在您的URL中。负载计数等完全取决于您的要求。但是默认实现是不必要的。 - Afridi
是的,当然,我正在尝试修复代码中的一些错误。 - phalco
对于某些有效载荷,设定“边界”似乎是必要的。 - undefined

9
我希望这能帮助其他人避免长时间的调试工作。问题在于对于一些多部分上传,你就是没有办法。例如,如果你需要执行multipart/related,并且需要在Headers中使用Content-Type表达,那么Postman无法帮助你。主要原因是,即使你添加了自己的boundary,Postman仍然只会生成一个随机的boundary。困难的部分在于,Postman将声称在Postman控制台中使用你的boundary,但实际上在调用中使用的是不同的boundary。因此,声明的头部boundary和实际使用的boundary将不匹配。
以下是来自Postman的请求示例,在Postman控制台和Fiddler中查看。如您所见,Fiddler显示Postman实际上正在发送一个随机的boundary,而Postman声称使用提供的boundary。

Fiddler vs Postman rendering of raw request

我真的希望他们在Postman中修复这个问题。即使他们不修复根本问题,至少也要在Postman控制台中显示它。对于大多数API来说,这是一个很棒的工具,但如果你想访问DICOM服务器并且要求符合标准...那么你就没戏了。


3
这是Postman长期存在的问题。如果你的设置涉及使用文本或JSON等一部分,但另一部分涉及图片等,则可能会有些棘手。关键是将Content-Type标头设置为multipart/mixed,然后将所有内容转换为文件。如果是文本,则可以忽略“将其转换为文件”的步骤:)
在以下评论中提出了此问题:https://github.com/postmanlabs/postman-app-support/issues/1104 Ninja更新:不确定这是否对其他人有所帮助,但是针对特定场景(单个多部分POST请求中上传多个文件类型/内容类型),有一种解决方法。
  1. 将标头Content-Type设置为multipart/mixed
  2. Body中选择form-data选项。
  3. 将所有项目转换为文件。字符串内容应变成文本文件等。
  4. 通过选择file并添加键名来添加每个文件。
这种方法不需要实际手动指定每个Content-TypeContent-Disposition。这里的诀窍是将所有相关内容序列化为持久文件类型。希望能对某人有所帮助!

-3

这个视频介绍了如何使用Postman发布multipart/form-data。我上传了一个Content-Type为multipart/form-data的文本文件。


您能否在回答中添加所需步骤的描述?链接可能会损坏和/或失效,因此信息将丢失。 - pitprok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接