使用Jersey表单参数上传JSON文件时mediaType为application/octet-stream问题咨询
问题1:Jersey库默认不支持JSON格式MediaType判定是否有特定原因?
- 优先级导向的初始设计:Jersey multipart模块早期的默认MediaType映射列表,优先覆盖当时普及度更高的通用文件格式(图片、音频、办公文档、普通文本等),JSON文件上传场景在模块设计初期普及率极低,因此没有纳入默认映射范围。
- 灵活性考量:JSON作为通用数据格式,大量业务场景会使用自定义后缀或自定义MediaType(如
application/vnd.自定义标识+json),如果默认硬编码.json到application/json的映射,反而会干涉自定义场景的正常使用,因此官方最初选择不加入默认映射。
问题2:更高版本的Jersey是否已经新增了多部分文件上传场景下的application/json格式支持?
- 已新增支持:Jersey 2.39及之后的2.x版本,全部3.x版本,都已经将
.json后缀与application/json的对应关系加入到默认MediaType预测列表中,符合条件的版本上传JSON文件会自动识别对应MediaType,不需要额外配置。 - 低版本兼容方案:如果使用的Jersey版本低于2.39,可以在创建
FileDataBodyPart时手动指定MediaType,代码示例如下:
FileDataBodyPart fileBodyPart = new FileDataBodyPart(name, file, MediaType.APPLICATION_JSON_TYPE); form.bodyPart(fileBodyPart);
内容的提问来源于stack exchange,提问作者Tejas Ambekar
相关产品推荐
相关产品推荐

