下载文件时可以正常下载,但TOMCAT的日志中报:
2008-01-10 09:31:38 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.io.IOException: Stream closed
at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:202)
at org.apache.jasper.runtime.JspWriterImpl.clearBuffer(JspWriterImpl.java:157)
错误,请问怎么能不出现这个错误?
下载页面代码如下:
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%
String pathname = request.getParameter("path");
String filename=request.getParameter("filename");
out.print(pathname+filename); response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename="+filename); FileInputStream fileInputStream =new FileInputStream(pathname+filename);
out.print(pathname+filename);
out.clear();
out.close();
ServletOutputStream myout=response.getOutputStream();
int i;
while ((i=fileInputStream.read()) != -1)
{myout.write(i);}
fileInputStream.close();
myout.close(); %>
2008-01-10 09:31:38 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.io.IOException: Stream closed
at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:202)
at org.apache.jasper.runtime.JspWriterImpl.clearBuffer(JspWriterImpl.java:157)
错误,请问怎么能不出现这个错误?
下载页面代码如下:
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%
String pathname = request.getParameter("path");
String filename=request.getParameter("filename");
out.print(pathname+filename); response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename="+filename); FileInputStream fileInputStream =new FileInputStream(pathname+filename);
out.print(pathname+filename);
out.clear();
out.close();
ServletOutputStream myout=response.getOutputStream();
int i;
while ((i=fileInputStream.read()) != -1)
{myout.write(i);}
fileInputStream.close();
myout.close(); %>
解决方案 »
- java 怎么自动生成txt文件
- model-driven 多个对象读取!高手来!!!
- 像雅虎中国,鼠标右键查看源代码,代码都很紧凑,编辑时左侧用于缩进的tab和空格都没了,是怎么做到的?
- Form标签的提交
- 有哪位能给我解释下网站的问题啊,谢谢了
- 快抓狂了!用smartUpload上传文件和request.getParameter读其他域为空的冲突问题。
- JSP 动态生成Excel 文件的问题
- 记录集更新的问题
- int与String比较的问题
- 如何在tomcat中使用,javax.transaction.TransactionManager
- 在页面中出现 自动选择 日期 格式:2008-08-08 在线等
- menu以及redio的传值问题!
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;
public class DownloadServlet extends HttpServlet {
private String contentType = "application/x-msdownload";
private String enc = "utf-8";
private String fileRoot = "";
public void init(ServletConfig config) throws ServletException {
String tempStr = config.getInitParameter("contentType");
if (tempStr != null && !tempStr.equals("")) {
contentType = tempStr;
}
tempStr = config.getInitParameter("enc");
if (tempStr != null && !tempStr.equals("")) {
enc = tempStr;
}
tempStr = config.getInitParameter("fileRoot");
if (tempStr != null && !tempStr.equals("")) {
fileRoot = tempStr;
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//String filepath = request.getParameter("filepath");
String filepath = "test.txt";
String fullFilePath = fileRoot + filepath;
File file = new File(fullFilePath);
if (file.exists()) {
String filename = URLEncoder.encode(file.getName(), enc);
response.reset();
response.setContentType(contentType);
response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
int fileLength = (int) file.length();
response.setContentLength(fileLength);
if (fileLength != 0) {
InputStream inStream = new FileInputStream(file);
byte[] buf = new byte[4096];
ServletOutputStream servletOS = response.getOutputStream();
int readLength;
while (((readLength = inStream.read(buf)) != -1)) {
servletOS.write(buf, 0, readLength);
}
inStream.close();
servletOS.flush();
servletOS.close();
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
及时是一个空格,jsp也要翻译成
out.print(" ");
而这时候out已经不能 print了