[英]Open Save dialog box after clicking anchor tag for saving pdf or excel file
[英]save as dialog box to save a PDF file
我正在尝试显示另存为对话框以保存PDF文件。 这应该在单击JSP中的链接时发生。 单击此链接后,我将调用一个struts操作,该操作将准备PDF并转发到另一个我要用于下载框的JSP“ download.jsp”。
我尝试使用'document.execCommand',但看来这仅适用于.txt和.html文件。
然后,我尝试通过设置响应头和内容类型来做到这一点。 以下是我的download.jsp中的代码。 但这会将垃圾字符写入我的浏览器。
请让我知道此问题的解决方案。
<%@ page language="java" import="javax.servlet.ServletOutputStream,java.io.BufferedOutputStream,java.io.DataInputStr eam,java.io.File,java.io.FileInputStream"%><%
response.setHeader("Content-Disposition","attachment;filename=\"" + "mandateOut.pdf" + "\"");
response.setContentType( "application/pdf" );
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "max-age=0");
File file = new File(<fully qualified file name>);
response.setContentLength( (int)file.length() );
// get the OutputStream and buffer our bytes to it
ServletOutputStream outStream = response.getOutputStream();
byte[] buf = new byte[1024];
DataInputStream in = new DataInputStream(new FileInputStream(file));
int len;
while ((in != null) && ((len = in.read(buf)) != -1))
{
outStream.write(buf,0,len);
}
// keep the page from freaking out over our use of it's outputstream
in.close();
outStream.flush();
outStream.close();
%>
您正在使用MVC框架Struts。 在这样的框架中,其作用是生成HTML标记的View被实现为JSP。 它只能包含HTML,JSP EL和JSP标记。 没有Java代码。 它的默认内容类型是text / html。
控制器的作用是处理表示逻辑,并使用Java操作实现。
在这种情况下,您无需生成任何HTML标记。 您只需要将字节发送到响应输出流。 那么,为什么要使用JSP呢? 这不是它的工作。 您应该直接从控制器(即操作)执行此操作。
将上面的代码直接放在操作中,一切都应该没问题。
注意 :
finally
块中关闭。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.