当前位置: 首页 > 知识库问答 >
问题:

根据键的顺序,MultipartFormDataOutput中缺少部分

周麒
2023-03-14

我有一个JavaRESTendpoint,它应该返回带有json文档和pdf文件的多部分响应。我选择“form-data”而不是“mixed”,因为我想为这些部分指定一个名称,以防将来有多个不同的json或文件部分。

问题:在输出中,部分似乎根据我指定的键进行排序,这是有道理的,因为MultipartFormDataOutput的formDataMap是一个HashMap。如果json部分是第一个,则一切正常工作。但是如果文件部分是第一个排序的,则输出中缺少json部分,以及末尾的表单数据边界。

我觉得我已经尝试了每一种可能的变体,通过切换媒体类型,响应类型,注释,尝试不同的pdf文件等,但似乎没有什么帮助。

有没有人知道如何解释这种行为?任何帮助是欢迎的,谢谢!

@POST
@Path("test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces("multipart/form-data")
public Response test(MyObject o)
{
   // process input and get the byte arrays for the json document and pdf file

   var output = new MultipartFormDataOutput();
   output.addFormData("foo.json", new ByteArrayInputStream(myJsonByteArray), MediaType.APPLICATION_JSON_TYPE.withCharset("UTF-8"), "foo.json");
   output.addFormData("document.pdf", new ByteArrayInputStream(myPdfByteArray), MediaType.valueOf("application/pdf"), "document.pdf");
   return Response.ok(output).build();
}

我用的是Quarkus 1.13.7和Resteasy 4.5.12

共有1个答案

华凌
2023-03-14

不确定这是否有帮助,但在返回之前尝试使用GenericEntity包装MultipartFormDataOutput。

GenericEntity<MultipartFormDataOutput> outputGen = new GenericEntity<MultipartFormDataOutput>(output) {};

return Response.ok(outputGen).build();
 类似资料:
  • 问题内容: 我有一个包含格式错误的JSON的字符串,该字符串在缺少键的情况下提供给我。JSON的结构超出了我的控制范围,因此我需要使用已有的东西。我已经找到了OP可以在JavaScript中解析格式错误的JSON的解决方案,但是其中一个值包含一个RegEx匹配的URL,并将其转换为另一个键(如值),导致JSON真正损坏。有任何想法吗? 我也看过jsonrepair,但是在那里没有太大的成功。 问题

  • 问题内容: 如何使用Sequelize查找关系中的某个列满足条件的所有人? 一个示例是查找所有作者姓氏为“ Hitchcock”的图书。书籍架构包含与Author’s表的hasOne关系。 编辑:我了解如何使用原始SQL查询来完成,但是正在寻找另一种方法 问题答案: 这是一个有效的示例,说明如何让Sequelize 通过具有特定姓氏的来获取全部信息。它看起来比实际要复杂得多,因为我正在定义模型,将

  • 问题内容: 请注意,以下组的输出中缺少和月份。如果一个月没有数据,我想显示月份和。有人知道该怎么做吗? 样本数据: 仍然无法清除丢失的行,这是我在其中的位置。 问题答案: 如果您不希望超出结果的日期和日期,则可以执行以下操作:

  • 问题内容: 我正在寻找一种最有效的方法,根据序列中缺少的数字将数字列表分成较小的列表。例如,如果初始列表为: 该函数将产生: 要么 会导致: 问题答案: 旧Python文档中的Python 3版本代码: 每当关键函数更改其返回值时,itertools模块中的函数都会生成中断。诀窍在于,返回值是列表中的数字减去列表中元素的位置。当数字中有空格时,此差异会更改。 该功能来自operator模块,您必须

  • 问题内容: 我有一本字典 但是,我需要字典的顺序不同: 做这个的最好方式是什么? 问题答案: 字典 没有顺序 。因此,没有办法做到这一点。 如果您使用的是python2.7 +,则可以使用-在这种情况下,您可以使用检索项目列表,然后将其反向并从反向列表中创建一个新项: 如果您使用的是旧版python,则可以从http://code.activestate.com/recipes/576693/获得

  • 我有一个webservice,当我调用该webservice时得到这个响应。 现在我要根据我在这个数组中得到的顺序对这个完整的数组进行排序?我怎样才能做到这一点呢?