Multipart/form-data 的邮递员

POSTMAN for Multipart/form-data

如何为 Multipart/form-data 使用 POSTMAN,它已自定义 header 来测试我的控制器,它采用 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

在 Postman

中使用 'Multipart/form-data ' 的步骤
  1. 创建新标签页
  2. 插入控制器Url
  3. 将方法类型设置为POST
  4. 正文 选项卡下,select 表单数据
  5. 对于作为文件的每个键,将 Value 类型设置为 File

这是 Postman 的 long-known 问题。如果您的设置涉及对一部分使用文字或 JSON 但对另一部分使用图片,则可能会有点棘手。关键是将 Content-Type Header 设置为 multipart/mixed 然后将所有内容转换为文件。如果是文本,您可以忽略 "convert it into a file" 步骤 :)

在以下位置发表评论:https://github.com/postmanlabs/postman-app-support/issues/1104

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

  1. 将 Header Content-Type 设置为 multipart/mixed
  2. Select Body 中的 form-data 选项。
  3. 将所有项目转换为文件。字符串内容要变成文本文件等
  4. 通过选择 file 添加每个文件,添加一个键名。

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

This video 描述了如何 post multipart/form-data 使用 postman。我上传了一个内容类型为 multipart/form-data.

的文本文件

我希望这会帮助其他人避免长时间的调试工作。底线是,对于一些分段上传,你只是运气不好。例如,如果您需要做 multipart/related,并且需要在 Headers 中用 Content-Type 来表达,Postman 无法帮助您。这主要是因为 Postman 仅生成一个随机边界,即使您添加了自己的边界也是如此。困难的部分是 Postman 将 声称 在 Postman 控制台中使用您的边界,但实际上会在调用中使用不同的边界。因此声明的 header 边界和实际使用的边界不匹配。

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

我真的希望他们在 Postman 中解决这个问题。至少向它展示 Postman 控制台,即使他们没有解决根本问题。对于大多数 API 来说,它是一个很好的工具,但是如果你试图访问 DICOM 服务器,并且要符合它......那你就不走运了。