2011-04-01 10 views
5

Tarayıcıya dönmek istediğim bir ZipOutputStream var. İstediğim deneyim, kullanıcının bir bağlantı etiketini tıklatması ve daha sonra sahip olduğum ZipOutputStream için bir dosya indirme istemi görüntülenmesidir.ZipOutputStream tarayıcısına döndürme

ZipOutputStream'i tarayıcıya nasıl geri yüklersiniz?

cevap

12

Sadece aynı şeyi dün yapmak zorunda kaldı.

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(); 
    } 

Not Bir ByteArrayOutputStream sarmalayıcı kullanarak ve toByteArray ama muhtemelen sadece doğrudan standart InputStream.read() OutputStream.write() döngü ile yanıta OutputStream başka türde yazabilirsiniz ediyorum.

Aslında daha hızlı varsa, ama çoğu bellek bilinçli yaklaşım olmayabilir burada ByteArrayOutputStream benim kullanımını şüphelendiğiniz emin değilim Kapalı eli:

İlgili konular