Jersey RESTful Web 服务中的附加数据文件上传
要在单个 REST 调用中实现文件上传以及其他对象数据,请修改uploadFileWithData 方法如下:
@POST @Path("/upload2") @Consumes({MediaType.MULTIPART_FORM_DATA, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response uploadFileWithData( @FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition contentDispositionHeader, @FormDataParam("emp") String employeeJson) { // Deserialize the employee data from JSON JacksonJsonProvider provider = new JacksonJsonProvider(); Employee emp = provider.readFrom(Employee.class, employeeJson); // ...business logic... }
Key要点:
Postman 故障排除:
Postman 可能不会自动为各个身体部位设置 Content-Types。要解决此问题:
替代解决方案:
或者,您可以在 REST 方法中显式设置 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); // ...business logic... }
注意:
如果您使用的连接器与 HttpUrlConnection 不同,您可能会遇到相关评论中讨论的问题。
以上是如何在 Jersey RESTful Web 服务中上传带有附加 JSON 数据的文件?的详细内容。更多信息请关注PHP中文网其他相关文章!