//而你却要进行流输出:ServletOutputStream,这样做相当于试图在Servlet中使用两种输出机制,
//就会发生:getOutputStream() has already been called for this response的错误
//详细请见《More Java Pitfill》一书的第二部分 Web层Item 33:试图在Servlet中使用两种输出机制 270
//而且如果有换行,对于文本文件没有什么
问题,但是对于其它格式,比如AutoCAD、Word、Excel等文件
//
下载下来的文件中就会多出一些换行符0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。
response.reset();//可以加也可以不加
response.setContentType(\"application/x-download\");//设置为
下载application/x-download
// /../../退WEB-INF/classes两级到应用的根目录下去,注意Tomcat与WebLogic下面这一句得到的路径不同,WebLogic中路径最后没有/
System.out.println(this.getClass().getClassLoader().getResource(\"/\").getPath());
String filenamedownload = this.getClass().getClassLoader().getResource(\"/\").getPath() + \"/../../系统解决方案.doc\";
String filenamedisplay = \"系统解决方案.doc\";//系统解决方案.txt
filenamedisplay = URLEncoder.encode(filenamedisplay,\"UTF-8\");
response.addHeader(\"Content-Disposition\",\"attachment;filename=\" + filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte b = new byte[1024];
int i = 0;
while((i = fis.read(b)) > 0)
{ [Page]
output.write(b, 0, i);
}
output.flush();
}
catch(Exception e)
{
System.out.println(\"Error!\");
e.printStackTrace();
}
finally
{
if(fis != null)
{
&