使用apache IoUtil 对接流,实现文件下载

前一阵子做文件下载,按照以往的做法需要写循环操作输出流非常麻烦,基本都是拷贝,读写都不方便。

灵机一动我改用了IOUtils.copy 方法成功实现了操作,写起来比较简洁,看代码:

            //文件名
            String myfileName=new String(filename.getBytes());
            //需要下载的文件
            String filepath=request.getSession().getServletContext().getRealPath("/test.jpg");
            
            File myfile = new File(filepath);
            // 清空response
            response.reset();
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" + myfileName );
            response.addHeader("Content-Length", "" + myfile.length());
            response.setContentType("application/octet-stream");
            
            //打开文件输入流 和 servlet输出流
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            InputStream fis = new BufferedInputStream(new FileInputStream(file));
            
            //通过ioutil 对接输入输出流,实现文件下载
            IOUtils.copy(fis, toClient);
            toClient.flush();
            //关闭流
            fis.close();
            toClient.close();


你可能感兴趣的:(apache,servlet)