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

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

Patricia Arquette
发布: 2024-11-30 22:50:11
原创
464 人浏览过

How to Upload Files and Accompanying Data Simultaneously in a Jersey RESTful Web Service?

在 Jersey RESTful Web 服务中上传附带数据的文件

在系统中创建员工时,您可能希望在其中包含图像他们的个人信息。虽然可以通过单独的 REST 调用来完成此操作,但通过单个调用来完成此操作效率更高。本文提供了解决此问题的方法,允许您同时接收文件和员工数据。

要实现此目的,请修改 Java 方法如下:

@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
}
登录后复制

在 JSON 中结构中,员工数据现在是多部分请求的一部分:

{
    "emp": {
        "Name": "John",
        "Age": 23,
        "Email": "[email protected]",
        "Adrs": {
            "DoorNo": "12-A",
            "Street": "Street-11",
            "City": "Bangalore",
            "Country": "Karnataka"
        }
    }
}
登录后复制

其他注意事项

  • Jersey 不允许在单个请求中使用多个 Content-Type。
  • 某些客户端可能不支持为各个身体部位设置 Content-Type(例如,Postman 和使用 FormData 时的浏览器)。
  • 要解决此问题,请在反序列化 JSON 之前显式设置 Content-Type data:
jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
Employee emp = jsonPart.getValueAs(Employee.class);
登录后复制
  • 或者,您可以使用 String 参数并使用 Jackson ObjectMapper 等库反序列化 JSON。

通过执行以下步骤,您可以使用 Jersey 在一次 REST 调用中成功上传文件和随附的员工数据。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板