I need to receive an HTTP Post Multipart which contains only 2 parameters:

  • JSON字符串
  • 二进制文件

哪种身体摆放方式是正确的? 我将使用Chrome睡觉控制台测试HTTP调用,所以我想知道是否正确的解决方案是为json参数和二进制文件设置一个"label"键.

On the server side I'm using Resteasy 2.x, and I'm going to read the Multipart body like this:

@POST
@Consumes("multipart/form-data")
public String postWithPhoto(MultipartFormDataInput  multiPart) {
  Map <String, List<InputPart>> params = multiPart.getFormDataMap();
  String myJson = params.get("myJsonName").get(0).getBodyAsString();
  InputPart imagePart = params.get("photo").get(0);
  //do whatever I need to do with my json and my photo
}

这是走这条路吗? 使用标识特定内容处置的键"myJsonName"检索我的JSON字符串是否正确? 有没有其他方法可以在一个HTTP多部分请求中接收这两个内容?

提前谢谢

推荐答案

如果我理解正确,您希望从HTTP/REST控制台手动编写一个多部分请求.多部分格式很简单;简介可在in the HTML 4.01 spec页找到.你需要找到一个边界,这是一个在内容中找不到的字符串,比如HereGoes.您将请求头设置为Content-Type: multipart/form-data; boundary=HereGoes.那么这应该是一个有效的请求主体:

--HereGoes
Content-Disposition: form-data; name="myJsonString"
Content-Type: application/json

{"foo": "bar"}
--HereGoes
Content-Disposition: form-data; name="photo"
Content-Type: image/jpeg
Content-Transfer-Encoding: base64

<...JPEG content in base64...>
--HereGoes--

Json相关问答推荐

使用jq解析多层json

SSIS Kingswaysoft Json源动态 node 名称

从json数组中删除特定元素

Vega图表计数聚合如果数据值为空数组则不显示任何内容,如何解决此问题?

如何将文件夹组织的.json文件合并为一个JSON文件,文件夹/文件名作为键

从Postgres表中的JSON中提取值

如何使用jq按键 Select 并获取整个json输出来更改json中的多个值

Jolt规范:将嵌套数组中的null元素移除

如何将一个对象添加到多个对象中 JOLT

Groovy JsonBuilder 在for循环中添加数组元素

Kotlin Android Room 处理 Moshi TypeConverter 中的空对象列表

如何为所有 API 端点全局设置 http.ResponseWriter Content-Type 标头?

如何使用 gson 调用默认反序列化

如何找出实际安装了哪个版本的 bower 包?

Jackson Json:如何将数组转换为 JsonNode 和 ObjectNode?

使用 JSONObject 在 Java 中为以下 struct 创建嵌套 JSON 对象?

在android中读取Json数组

Retrofit2.0 得到 MalformedJsonException 而 json 似乎正确?

MySQL Select JSON 字段属性具有值的位置

如何对 jq 中的 map 数组中的值求和?