文件下载功能

public void downloadFile(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
    BufferedInputStream bis = null;
     BufferedOutputStream bos = null;
     OutputStream os = null;
     InputStream is = null;
     String filename=request.getParameter("filename");
     //String  filename2 = new String(filename.getBytes("UTF-8"),"iso-8859-1");
     filename = new String(filename.getBytes("iso8859-1"),"UTF-8");
    // filename= URLEncoder.encode(filename, "UTF-8");
    //  filename=  URLDecoder.decode(filename,"UTF-8");
      System.out.println(">>>>>>>>filename>"+filename);
     String filePath = request.getSession().getServletContext().getRealPath("/myread/" + filename);//项目路径
    File downloadFile = new File(filePath);
        is = new FileInputStream(downloadFile);
        bis = new BufferedInputStream(is);
        os = response.getOutputStream();
        bos = new BufferedOutputStream(os);
     
     // request.setCharacterEncoding("iso-8859-1");
      String fileName = java.net.URLEncoder.encode(filename, "UTF-8");//处理中文文件名的问题
         // fileName = new String(fileName.getBytes("UTF-8"),"gbk");//处理中文文件名的问题
         // System.out.println(">>>>>>>>fileName==>"+fileName);
             response.reset();
             response.setCharacterEncoding("utf-8");
             response.setContentType("application/octet-stream");//文件类型contenttype
             response.setHeader("Content-Disposition","attachment; filename=" + fileName);  //关键部分,打开一个下载框
             int bytesRead = 0;
             byte[] buffer = new byte[8192];
             
             while((bytesRead = bis.read(buffer,0,8192)) != -1)
             {
              bos.write(buffer, 0, bytesRead);
             }
             bos.flush();   
             is.close();
             bis.close();
             os.close();
             bos.close();
     
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值