关闭

servlet下载代码

776人阅读 评论(0) 收藏 举报

有两种方式,一种是流,一种是用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是否也行。

0
0

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:132327次
    • 积分:1574
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:6篇
    • 译文:0篇
    • 评论:23条
    最新评论