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

时间:2014-12-06 03:45:10

标签: ajax spring rest jax-rs

民间,

我有一个REST控制器,它调用服务来获取代表PDF的BASE 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无法实现的。 此外,我希望用户看到某种“请等待”。此处理发生在后端时发出消息。我也很欣赏这方面的任何意见。

0 个答案:

没有答案