伙计们,
我有一个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实现的。 另外,我想用户看到某种“请等待”的信息,而该处理在后台发生。 我会很感激的任何投入为好。