Berthou.comJava, DB2, Websphere, apache, ma vision de l’informatique… | |
|
Description Cette petite servlet vous permet de recevoir dans un fichier zip le contenu d'une URL donnée en paramètre. Nous vous montrons donc comment créer et envoyer un fichier zip à l'utilisateur. Principe de fonctionnement
Code package javaside.servlet.sample ; /** * zipservlet.java * * Main class for sample servlet * * @author : R. BERTHOU * URL : http://www.berthou.com/ * ----------------------------------------------------------- * Ver * Author * DATE * Description * ....................DD/MM/YY............................... * 1.00 * R.BERTHOU * 12/01/01 * **********************************************************/ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.zip.*; import java.net.*; import java.util.*; public class zipservlet extends HttpServlet { public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { byte b[]=new byte[300000]; URL url; String temp; ByteArrayOutputStream bout=new ByteArrayOutputStream(); ZipOutputStream zout=new ZipOutputStream(bout); ServletOutputStream out = res.getOutputStream(); ServletContext servletContext = getServletContext(); if ((temp=req.getParameter("url"))!=null) { try { url=new URL(temp); URLConnection uc = url.openConnection(); DataInputStream input = new DataInputStream(uc.getInputStream()); int numRead=0; int size=0; while (numRead != -1) { numRead = input.read(b,size,20000); size+=numRead; } zout.putNextEntry(new ZipEntry("file.html")); zout.write(b,0,size); zout.closeEntry(); zout.finish(); String zip=bout.toString(); res.setContentType("application/zip"); res.setHeader("Content-Disposition","inline; filename=output.zip;"); out.println(zip); out.flush(); } catch (Exception e) { res.setContentType("text/html"); out.println("<html><head></head>"); out.println("<body><b>"); out.println("An error has occured while processing "+temp+""); out.println("Here is the exception: "+e+""); e.printStackTrace(new PrintWriter(out)); out.println("</body>"); out.println("</html>"); } } } } |
CatégoriesMots-clefsArticles récentsCommentaires récents
|
|
| |
2 réponses pour"Servlet – zipservlet"
Très bonne source.
Par contre l’url passée en paramètre ne peut être qu’un fichier html à ce que je vois et la page ne peut dépassée 300000 octets soit 300 Ko, ce qui peut être limitant.
Rien de bien grave, facilement modifiable à la main.
Merci pour ce petit ^bout de code bien pratique ^^
Oui pour des raisons de simplicité, le but de ce source est de proposer un exemple d’utilisation. C’est une base pour réaliser un développement plus complexe.
Ajouter une réponse