首页 >Java >java教程 >如何在 Jersey RESTful Web 服务中同时上传文件和 JSON 数据?

如何在 Jersey RESTful Web 服务中同时上传文件和 JSON 数据?

Susan Sarandon
Susan Sarandon原创
2024-12-06 14:44:11733浏览

How to Upload a File and JSON Data Simultaneously in a Jersey RESTful Web Service?

Jersey RESTful Web 服务中的文件与其他对象一起上传

问题:

您希望使用 Jersey 在单个 REST API 调用中创建包含图像和员工数据的员工记录,但当前的实现会引发问题Chrome Postman 中出现错误。

答案:

要启用同时文件上传和 JSON 数据传输,JSON 数据必须包含在多部分请求中。以下是代码片段的修改版本:

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        @FormDataParam("emp") Employee emp) {

//..... business login

}

关键的更改是添加了 @FormDataParam("emp") 以将员工数据包含在多部分请求中。

附加说明:

  • 如果遇到错误“No Injection Source found for a使用新代码时,请确保服务器代码中存在用于处理多部分请求的正确 Jersey 配置。
  • 一些 REST 客户端,例如浏览器的默认 FormData 功能可能不支持为各个多部分部分设置 Content-Types。为了解决这个问题,您可以在服务器端反序列化数据之前显式设置 JSON 部分的 Content-Type:
@POST
@Path("upload2")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFileAndJSON(@FormDataParam("emp") FormDataBodyPart jsonPart,
                                  @FormDataParam("file") FormDataBodyPart bodyPart) { 
     jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
     Employee emp = jsonPart.getValueAs(Employee.class);
}

以上是如何在 Jersey RESTful Web 服务中同时上传文件和 JSON 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn