servlet 下载代码模板


        String fileName = request.getParameter("fileName");
       
         //解决文件乱码
         fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8");
        
         //获取请求头中的User-Agent
         String agent =  request.getHeader("User-Agent");
         String bianmaFileName = "";   
            if (agent.contains("MSIE")) {
                // IE浏览器
        bianmaFileName = URLEncoder.encode(fileName, "utf-8");
        bianmaFileName = bianmaFileName.replace("+", " ");
        } else if (agent.contains("Firefox")) {
                // 火狐浏览器
        BASE64Encoder base64Encoder = new BASE64Encoder();
        bianmaFileName = "=?utf-8?B?"
                        + base64Encoder.encode(fileName.getBytes("utf-8")) + "?=";
        } else {
                // 其它浏览器
            bianmaFileName = URLEncoder.encode(fileName, "utf-8");                
        }
        
        
            //要下载的文件类型
            response.setContentType(this.getServletContext().getMimeType(fileName));
            
            //告诉客户端文件不是直接打开,而是下载
             response.setHeader("Content-Disposition","attachment;filename="+bianmaFileName);
        

        // 获取文件的绝对路径
        String path = this.getServletContext().getRealPath("image/"+fileName);
        //获取文件输入流
        InputStream in  = new FileInputStream(path);
        //获得输出流(通过response 获取输出流,向客户端写数据)
        ServletOutputStream out =  response.getOutputStream();
        //文件拷贝代码
        int len = 0;
        byte[] buffer = new byte[1024];
        while((len= in.read(buffer))>0){
            out.write(buffer, 0, len);
        }
        in.close();
        out.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值