servlet下载代码

原创 2007年09月21日 20:33:00

有两种方式,一种是流,一种是用RequestDispatcher。

后一种由于getServletContext().getRequestDispatcher方法只接收字符(这里用文件相对路径),数据库文件写出还是用流方式更为合适。

 

        //先设置头与内容
        response.setContentType("application/x-download");
        response.setHeader(
"Content-Disposition","attachment;filename=SomeFileName");
        
//设置输入流(可以是文件,数据库数据等),缓冲区,用循环读入流数据到缓冲中,并写出到response输出流
        FileInputStream fis = new FileInputStream(new File("x:/path/file"));
        
byte[] buffer = new byte[1024];
        
int length;
        
while((length = fis.read(buffer)) > 0)...{
            response.getOutputStream().write(buffer, 
0, length);
            
if(length < 1024)
                
break;
        }

        
//记得关闭
        response.getOutputStream().flush();
        response.getOutputStream().close();

 

在下载文件名为中文名时此函数会出问题。将文件名用URLEncode.encode处理过后正常。不知道直接设置编码为utf-8是否也行。

收藏助手
不良信息举报
您举报文章:servlet下载代码
举报原因:
原因补充:

(最多只允许输入30个字)