民间,
我有一个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无法实现的。 此外,我希望用户看到某种“请等待”。此处理发生在后端时发出消息。我也很欣赏这方面的任何意见。