Разбор загрузки файла весной - PullRequest
0 голосов
/ 04 августа 2020

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

----------------------------559363225496099939024171
Content-Disposition: form-data; 
name="file"; 
filename="upload.txt"
Content-Type: text/plain
{  
    "documents": [    
        {      
            "id": "1",
            "text": "abc"    
        }  
     ]
}
----------------------------559363225496099939024171

Ниже мой контроллер. java

    @POST
    @Path("/modelInfo")
    @Produces({ "application/json" })
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response getModel(InputStream file) throws IOException {

        InputStreamReader isReader = new InputStreamReader(file, StandardCharsets.UTF_8);
        //Creating a BufferedReader object
        BufferedReader reader = new BufferedReader(isReader);
        StringBuffer sb = new StringBuffer();
        String str;
        while ((str = reader.readLine()) != null) {
            sb.append(str);
        }
   
        return Response.status(Response.Status.OK).entity(sb.toString()).build();
    }

upload.txt

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

Итак, я отправляю sb.toString() обратно в тело ответа.

Мой вопрос в том, как извлечь только данные содержимого из выше ответ я получаю?

Я пробовал использовать MultipartFile, все равно не повезло

1 Ответ

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

Параметр метода остальной конечной точки должен иметь тип MultipartFile, тогда вы можете получить входной поток файла из этого объекта

    @POST
    @Path("/modelInfo")
    @Produces({ "application/json" })
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response getModel(@RequestParam("file") MultipartFile file) throws IOException {
        InputStreamReader isReader = new InputStreamReader(file.getInputStream(), StandardCharsets.UTF_8);
    ...
...