你的代码中
<HTML>
<BODY>
其实最终是用JspWriter输出,所以会出现以下错误
org.apache.jasper.JasperException: getOutputStream() has already been called for this response要去掉全部的HTML代码<%@ page language="java" %>
<%@ page import="java.io.*" %>
<%
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition","attachment;filename=input.rar");
OutputStream o=response.getOutputStream();
response.reset();
response.setContentType("image/jpeg");
byte b[]=new byte[500];
File fileLoad=new File("D:/Inetpub/wwwroot/jsp/examp","input.rar");
long fileLength=fileLoad.length();
String length=String.valueOf(fileLength); response.setHeader("Content_Length",length); FileInputStream in=new FileInputStream(fileLoad);
int n=0;
while((n=in.read(b))!=-1)
{ o.write(b,0,n);
}
%>
<HTML>
<BODY>
其实最终是用JspWriter输出,所以会出现以下错误
org.apache.jasper.JasperException: getOutputStream() has already been called for this response要去掉全部的HTML代码<%@ page language="java" %>
<%@ page import="java.io.*" %>
<%
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition","attachment;filename=input.rar");
OutputStream o=response.getOutputStream();
response.reset();
response.setContentType("image/jpeg");
byte b[]=new byte[500];
File fileLoad=new File("D:/Inetpub/wwwroot/jsp/examp","input.rar");
long fileLength=fileLoad.length();
String length=String.valueOf(fileLength); response.setHeader("Content_Length",length); FileInputStream in=new FileInputStream(fileLoad);
int n=0;
while((n=in.read(b))!=-1)
{ o.write(b,0,n);
}
%>
<%-- dlmp3.jsp --%>
<%
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=abc.mp3");
java.io.FileInputStream in = null;
try
{
in = new java.io.FileInputStream(getServletContext().getRealPath("/") + "abc.mp3");
byte[] buf = new byte[1024];
int l = 0; javax.servlet.ServletOutputStream sop = response.getOutputStream();
while ((l = in.read(buf, 0, 1024)) != -1)
{
sop.write(buf, 0, l);
}
sop.close();
in.close();
}
catch (Exception e)
{
e.printStackTrace();
}
%>
response.getOutputStream();
原因就不用我说了吧。
最后一句一句的读,调试N次后
发现我的代码没一点问题
只要最后加入
in.close();
o.close();
就成功了
难道是没有关闭文件的问题??
好郁闷哦。
response.getOutputStream();
是真的吗,为什么不能?