apache IoUtilを使用してストリームをドッキングし、ファイルのダウンロードを実現

1316 ワード

この間、ファイルのダウンロードをしましたが、従来のやり方では、循環操作の出力ストリームを書くのが面倒で、基本的にはコピーで、読み書きも不便でした.
気が狂って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();