Java JSP:我正在做一个应用程序,其中我必须下载ppt文件
我正在开发一个应用程序,其中我必须使用JSP页面下载PPT文件。我正在使用以下代码,但它不起作用Java JSP:我正在做一个应用程序,其中我必须下载ppt文件,java,jsp,Java,Jsp,我正在开发一个应用程序,其中我必须使用JSP页面下载PPT文件。我正在使用以下代码,但它不起作用 <% try { String filename = "file/abc.ppt"; // set the http content type to "APPLICATION/OCTET-STREAM response.setContentType("APPLICATION/OCTET-STREAM"); // initialize the http content
<% try {
String filename = "file/abc.ppt";
// set the http content type to "APPLICATION/OCTET-STREAM
response.setContentType("APPLICATION/OCTET-STREAM");
// initialize the http content-disposition header to
// indicate a file attachment with the default filename
// "myFile.txt"
String disHeader = "Attachment Filename=\"abc.ppt\"";
response.setHeader("Content-Disposition", disHeader);
// transfer the file byte-by-byte to the response object
File fileToDownload = new File(filename);
FileInputStream fileInputStream = new
FileInputStream(fileToDownload);
int i;
while ((i=fileInputStream.read())!=-1)
{
out.write(i);
}
fileInputStream.close();
out.close();
}catch(Exception e) // file IO errors
{
e.printStackTrace();
}
%>
在顶部,内容处置标题中应该有一个分号(“附件*;*文件名…)
您可能还应该执行response.reset()在开始设置标题和流之前。Internet Explorer对于从安全套接字流式传输文件有非常奇怪的规则,如果不清除缓存标题,则无法正常工作。不仅内容配置
标题不正确,而且对于此特定任务,您错误地使用JSP而不是Servlet
JSP是一种视图技术。Scriptlet
之外的所有内容都将打印到响应中,包括换行符之类的空白字符。这肯定会损坏二进制文件
您可以删减JSP文件中的空白,但自十年前以来,现在就不鼓励使用Scriptlet。原始Java代码属于Java类,而不是JSP文件。真正的解决方案是为此使用HttpServlet
创建一个扩展HttpServlet的类,实现
method,将JSP文件中的Java代码移到这个方法中,将这个servlet映射到某个url模式上,您的问题就会消失。您可以找到这样一个servlet的基本示例。在下载之前检查该文件是否确实存在,只需将其转储到标准输出文件。exists()