Разбор данных MultipartFile в строку весной - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь преобразовать данные 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"
    }
  ]
}

Я отправляю файл. json в теле запроса как multipart / form-data, и я хочу прочитать содержимое файла и сохранить его как строку.

1 Ответ

0 голосов
/ 04 августа 2020

Если вы используете 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
  • По умолчанию HTTP-ответ равен 200, если вы не говорите Spring отправить что-то еще.
  • Если вы хотите переопределить это, аннотируйте свой метод с помощью @ResponseStatus
...