Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP:我正在做一个应用程序,其中我必须下载ppt文件_Java_Jsp - Fatal编程技术网

Java 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

我正在开发一个应用程序,其中我必须使用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-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()