이 아티클은 Devpia.co.kr 에 제가 답변 등록한 내용입니다...
 


  2006-12-18 오후 9:38:43   /  번호: 4233  / 평점:  (-) category: General Discussions (일반 사항)  /  조회: 35 
 긴급) response.write의 문자열을 압축해서 찍기..  이종민 / mildblue  
이종민님께 메시지 보내기   
이종민님의 블로그 가기   
 response.write("aaaaaaaaaaaa")
했을대.. 실제로 "문자열"이 엄청 많다고 가정하고.
이걸 gzip로 압축된 문자열로 내보내는 명령이 무엇인가요?
 
response.write("aaa")이라고 해서 콘솔에서 웹서버에 연결해 호출해보면 전혀 압축되어 지지  않고 리턴이 됩니다.
 
jsp를 보면
void sendHTML( HttpServletResponse response , String zipHTML ) {        
 
    ServletOutputStream  svrOut = null ;
 
    BufferedOutputStream outStream = null ;
 
    GZIPOutputStream zipStream = null ;            
 
       try {
 
         response.setHeader("Content-Encoding","gzip");  
 
         svrOut = response.getOutputStream();  
 
         outStream =  new BufferedOutputStream( svrOut );           
 
         zipStream = new GZIPOutputStream(  outStream ) ;
 
         byte[] zipHTMLArray = zipHTML.getBytes();
 
         zipStream.write(  zipHTMLArray, 0, zipHTMLArray.length );      
 
         zipStream.flush();   
 
       } catch( Exception writeException ) {
 
         writeException.printStackTrace();
 
       } finally {
 
           try {
 
             if ( zipStream != null ) zipStream.close();         
 
} catch( Exception closeException ) {
 
            closeException.printStackTrace();
 
           }    
 
       }
 
  }
 
해서 압축하여 출력할수가 있는데.. asp.net에는 이렇게 하는 방법이 없는지요?
 
아무리 찾아도... 찾지를 못했습니다...
 
asp.net 2.0에 Imports System.IO.Compression 을 사용하면 되다는데. 이거는 도무지 파일을 압축하는 소스 밖에는 못 찾겠내요..
 
response.write 할때 값을 압출하는 방법을 즉..(text)를 바로 압축하여 string변수에 담을수 있는 방법을 가르쳐 주세요^^
 
이 글에 평점 주기:  
  2006-12-19 오후 5:51:06   /  번호: 4246  / 평점:  (-)  
 [답변]  엄준일 / umjunil  
엄준일님께 메시지 보내기   
엄준일님의 블로그 가기   
저도 첨 보는 클래스라서 연습삼아 해봤습니다. ^^;
 
private void Page_Load(object sender, EventArgs e)
        {
               Response.ContentType   = "gzip";
               Response.AddHeader("Content-Disposition", "attachment;filename=a.zip");
              
               FileStream fs          = new FileStream(@"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\WebSites\MediaPlayer\intro.jpg", FileMode.Open);
              
               byte[] buffer          = new byte[fs.Length];
               fs.Read( buffer, 0, (int)fs.Length );
              
               fs.Close();
 
               MemoryStream ms               = new MemoryStream();
               GZipStream gs          = new GZipStream(ms, CompressionMode.Compress, true);
               gs.Write( buffer, 0, (int)buffer.Length );
 
 
               Response.Clear();
               Response.BinaryWrite( ms.GetBuffer() );
               Response.End();
              
               gs.Close();
               ms.Close();
        }
 
이런식으로 이미지 파일을 압축하여 a.zip 이라는 파일로 다운 받을 수 있습니다.
 
근데 압축 파일 열어보면 확장자도 없는 a 라는 파일이 달랑 하나 들어가 있는데..
 
이거 확장자를 다시 .jpg 로 바꾸어 주시면 됩니다.
 
위에 AddHeader를 빼시면 압축 내용을 그냥 화면에다가 뿌려줄 수도 있구요....
 
텍스트 압축도 위와 별단 다를거 없다고 생각합니다. 텍스트르 byte 배열로 넣어주시면 되구요
 
( JPG 압축하니 용량이 더 커지네요 ㅋ^^; )
이 글에 평점 주기:  




Posted by 땡초 POWERUMC

댓글을 달아 주세요