如何在AEM页面上显示来自Webservice的Excel、PDf文件
我尝试做以下工作:Web服务的响应是一个excel(对pdf的单独调用)文件。我需要在aem页面上将此文件显示为链接,当用户单击该链接时,浏览器将打开(或下载)该文件 用例:在客户页面上,有一个部分包含到订单历史记录(Excel文件)、发票(PDF文件)、产品目录(Excel文件)的链接。单击每个链接,调用webservice并获取相应的文件 如何实现这一点?在Scott的帮助下: 以下是我的解决方案:如何在AEM页面上显示来自Webservice的Excel、PDf文件,aem,sling,Aem,Sling,我尝试做以下工作:Web服务的响应是一个excel(对pdf的单独调用)文件。我需要在aem页面上将此文件显示为链接,当用户单击该链接时,浏览器将打开(或下载)该文件 用例:在客户页面上,有一个部分包含到订单历史记录(Excel文件)、发票(PDF文件)、产品目录(Excel文件)的链接。单击每个链接,调用webservice并获取相应的文件 如何实现这一点?在Scott的帮助下: 以下是我的解决方案: 从UI中,将操作提交到Servlet <form name="importFileF
<form name="importFileForm" method="get" action="/services/getData">
<input type="submit" title="Submit" value="Submit" name="bttnAction">
</form>
}public class TTIGetServlet extends SlingAllMethodsServlet {
@Override
protected void doGet(SlingHttpServletRequest request,SlingHttpServletResponse response) throws ServletException,IOException {
...
...
String serviceurl = <<< your webservice url>>>
HttpClient httpclient = HttpClients.custom().build();
generateFile(serviceurl, httpclient, request, response);
RequestDispatcher dispatcher = request.getRequestDispatcher("/content/ttii/en/importfiletest.html");
dispatcher.forward(request, response);
}
}
public static void generateFile(String serviceurl,
HttpClient httpclient,
SlingHttpServletRequest httpRequest,
SlingHttpServletResponse httpResponse) throws ClientProtocolException, IOException {
HttpResponse response;
HttpGet httpGet = new HttpGet(serviceURL);
// Makes the call to WebService
response = httpclient.execute(httpGet);
// CORE LOGIC
if (response!=null) {
ContentType contentType = ContentType.getOrDefault(response.getEntity());
String mimeType = contentType.getMimeType();
if (mimeType.equals(MIMETYPE_JSON)) {
// Out of context here...
} else {
// SHOW THE FILE
ServletOutputStream sos = httpResponse.getOutputStream();
httpResponse.setContentType("application/vnd.ms-excel");
httpResponse.setHeader("Content-Disposition", "attachment;filename=test.xls");
BufferedHttpEntity buf = new BufferedHttpEntity(response.getEntity());
InputStream istream = buf.getContent();
sos.write(FileHelper.writeFiles(istream));
sos.flush();
}
}