JAX-RS | 从Base64编码的数据下载PDF(JAX-RS | Download PDF

2019-10-21 09:40发布

伙计们,

我有一个REST控制器调用一个服务来获得一个代表PDF基地64编码的字符串。 我通过AJAX调用叫我的REST端点。 我基本上希望用户实际下载一个PDF文件,当他们点击一个链接。

这里是REST控制器:

@GET
    @Path("/getinvoice/{invoiceid}.pdf")
    @Produces("application/pdf")
    @Consumes(MediaType.TEXT_HTML)
    public Response invoice(@PathParam("invoiceid") final String invoiceid) throws ShoppingCartException, UnexpectedErrorFault_Exception,
            MalformedQueryFault_Exception, InvalidQueryLocatorFault_Exception, LoginFault_Exception, IOException {


        BASE64Decoder decoder = new BASE64Decoder();
        byte[] decodedBytes = decoder.decodeBuffer(aService.getInvoiceBody(invoiceid));
        ResponseBuilder response = Response.ok(new ByteArrayInputStream(decodedBytes));
        response.header("Content-Disposition", "attachment; filename=test.pdf");
        return response.build();
}

该服务将返回Base64编码字符串(代表PDF),我转换为字节数组(一些谷歌搜索后)。 我只是希望用户看到名为“invoiceid} .PDF”文件下载弹出,当他们点击链接。 截至目前返回的响应,但没有任何反应。

将不胜感激任何指针或帮助这里..

更新:正如一个快速测试,我禁用了Ajax调用和直接调用从REST的端点。 当时我能够成功下载该文件。 也许是受到了一些安全方面的原因,这不是通过Ajax实现的。 另外,我想用户看到某种“请等待”的信息,而该处理在后台发生。 我会很感激的任何投入为好。

文章来源: JAX-RS | Download PDF from Base64 encoded data