2011-04-01 7 views
5

私はブラウザに戻すZipOutputStreamを持っています。私が望むのは、ユーザーがアンカータグをクリックした後、私が持っているZipOutputStreamのファイルダウンロードのプロンプトが表示されることです。ブラウザにZipOutputStreamを返す

ZipOutputStreamをブラウザに戻すにはどうすればよいですか?

答えて

12

昨日、まったく同じことをしなければなりませんでした。

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    ZipOutputStream zip = new ZipOutputStream(baos); 

    .... populate ZipOutputStream 

    String filename = "out.zip"; 
    // the response variable is just a standard HttpServletResponse 
    response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\""); 
    response.setContentType("application/zip"); 

    try{    
     response.getOutputStream().write(baos.toByteArray()); 
     response.flushBuffer(); 
    } 
    catch (IOException e){ 
     e.printStackTrace();   
    } 
    finally{ 
     baos.close(); 
    } 

注私はByteArrayOutputStreamラッパーとtoByteArrayを使用していますが、あなたはおそらく、標準のInputStream.read()OutputStream.write()ループとの応答に直接のOutputStreamの他のタイプを記述することができます。

私は実際にはどちらが速いかわからないが、ここではByteArrayOutputStreamの使用がメモリ意識の最も高いアプローチではないと思われる。

関連する問題