首页 > 解决方案 > 在 spring 中将 MultipartFile 数据解析为字符串

问题描述

我正在尝试将 MultipartFile 数据解析为字符串并在 java springboot 中将字符串作为响应返回。任何人都可以为此提出正确的方法吗?

控制器.java

@POST
@Path("/modelInfo")
@Produces({ "application/json" })
public Response getPretrainedModel(MultipartFile data) throws IOException {
    String content = new String(data.getBytes(), StandardCharsets.UTF_8);
    return Response.status(Response.Status.OK).entity(content).build();
}

文件.json

{
  "documents": [
    {
      "id": "1",
      "text": "abc"
    }
  ]
}

我在请求正文中将 file.json 作为 multipart/form-data 发送,我想读取文件的内容并将其存储为字符串。

标签: javaspringspring-boot

解决方案


如果您使用的是 Spring 和 Spring Boot,那么您没有使用正确的注释。Spring 不支持Jax-RS规范。因此,更改您的注释:

//    @POST
//    @Path("/modelInfo")
//    @Produces({ "application/json" })
@PostMapping(value = "/modelInfo", produces = MediaType.APPLICATION_JSON_VALUE)

然后,要返回一个对象,您可以在方法中返回该对象:

@PostMapping(value = "/modelInfo", produces = MediaType.APPLICATION_JSON_VALUE)
public String getPretrainedModel(@RequestParam("file") MultipartFile data) throws IOException {
    String content = new String(data.getBytes(), StandardCharsets.UTF_8);
    return content;
}

笔记:

  • 不要忘记@RequestParam在方法参数中添加注释以获取上传的文件。名称file必须是您的 POST 请求上传的属性名称
  • 默认情况下,当您不告诉 Spring 发送其他内容时,HTTP 响应为 200。
  • 如果你想覆盖它,用注释你的方法@ResponseStatus

推荐阅读