Spring / Swagger скачать файл DOCX генерирует поврежденный документ - PullRequest
0 голосов
/ 28 апреля 2019

Spring / Swagger, загрузка файла DOCX создает поврежденный документ.Я нашел несколько похожих статей, но не смог запустить мой код.

PDF и обычный текстовый файл работает, как и ожидалось.Я надеюсь, что вы можете мне помочь. Я не знаю, где найти дополнительную информацию

Класс / метод интерфейса

@ ApiOperation (value = "Создать счет клиента", nickname = "createBill",notes = "С помощью этой команды вы можете создать счет для конкретного клиента и месяца", tags = {"Bill",})

@ApiResponses(value = { 
        @ApiResponse(code = 200, message = "successful operation") })
    @RequestMapping(value = "/Bill/CreateBill/{customerid}/{month}/{year}",
        produces = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document" }, 
        method = RequestMethod.POST)
    ResponseEntity<?> createBill(@ApiParam(value = "Customer number",required=true) @PathVariable("customerid") String customerid,@ApiParam(value = "Month",required=true) @PathVariable("month") Integer month,@ApiParam(value = "Year",required=true) @PathVariable("year") Integer year);

Реализованный класс / метод

                      responseHeaders.setContentType(new MediaType("application", "vnd.openxmlformats-officedocument.wordprocessingml.document"));
                      responseHeaders.set("Content-Disposition",
                                     "attachment; filename=test.docx");

                      File file = new File("c:/temp/report.docx");


                      final InputStream in =  new FileInputStream(file);

                      responseHeaders.setContentLength((int) file.length());

                      return ResponseEntity.ok()
                              .header("Content-Disposition",
                                      "attachment; filename=docx.zip")
                              .contentType(new MediaType("application", "vnd.openxmlformats-officedocument.wordprocessingml.document"))
                              .contentLength((int) file.length())
                              .body(IOUtils.toByteArray(in));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...