Angularjs: вызов API REST для получения документа docx с сервера - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь вызвать службу из angularjs, которая создает документ docx.

Angularjs должен отображать запрос на сохранение в веб-браузере, а затем сохранять документ.

Когда я открываю сохраненный документ, я получаю в файле docx:

Не определено

Api rest:

@RequestMapping(value = "/create-avenant",
        method = RequestMethod.POST,
        produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public void getAvenant(@RequestBody AvenantDTO avenant, HttpServletResponse response) {
    contratService.createAvenant(response, avenant);
}

Сервис создает XWPFDocument и отправляет в браузер:

private void sendDocToBrowser(HttpServletResponse response, XWPFDocument doc) throws IOException {
    try
    {
        byte[] buffer = new byte[8192];
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        doc.write(baos);
        response.setHeader("Content-Disposition", "attachment;filename=myDoc.docx");
        response.setContentType("application/docx");
        ServletOutputStream outputStream = response.getOutputStream();
        baos.writeTo(outputStream);
        outputStream.flush();
    }
    finally
    {
       outputStream.close();
    }
}

Angularjs:

Avenant.create(avenant,function(result){
    var blob = new Blob([result.body], { type: 'application/docx' });
    var link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);

    link.download = 'file.docx';
    link.click();
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...