Home| New Wiki | | Login | User registry | Home Tree PDF
Temporal Web
Owner:csilva, Version: 6, Date:Sun 05, February 2006,

Carpeta temporal web

Esta es una aplicacion J2EE (módulo WAR), que permite subir archivos a un area temporal donde permanecen por una cantidad de tiempo definida. Los archivos subidos se borran automaticamente o pueden ser borrados manualmente por cualquier usuario. Esta es básicamente un area libre para compartir archivos (como la carpeta /tmp de linux).

Esta programado con 1 servlet y 3 jsp usando Beans y programacion mvc, sin ninguna "cosa rara" salvo threads apra el borrado automatico...

Se incluyen las clases para IO y manejo de formularios con enconding form/mime-multipart :)

Download

Los fuentes son con Licencia ASF 2.0, y pueden bajarlos desde aqui webtemp.zip.

El archivo .jar solo incluye los fuentes. Debe generarse un archivo war valido a partir de esta base.

Ejemplo: Este WAR esta funcionando en este sitio: Sitio demo!.

Código

Se utiliza solo 1 servlet para todas las operaciones, separando GET (listar y obtener) y POST (subir archivo):

Listado 1: WebTemp.java::doGet(...)

   protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,
           IOException {
       flog("doGet...");
       
       List list = (List) getServletContext().getAttribute("list");
       List log = (List) getServletContext().getAttribute("log");
       Date now = new Date();
       String ip = req.getRemoteAddr();

       if (req.getParameter("download") != null) {
           flog("Downloading...");
           int elem = Integer.parseInt(req.getParameter("download"));
           TempFile file = (TempFile) list.get(elem);
           Part part = file.getPart();
           res.setContentType("application/download");
           res.setHeader("content-disposition", "attachment; fileName="" + file.getName() + """);
           new StreamPipe(new FileInputStream(part.getFile()), res.getOutputStream()).run();

           TempLog item = new TempLog(now, ip, "download", file.getName());
           log.add(item);
           return;
       } else if (req.getParameter("remove") != null) {
           flog("Removing...");
           int elem = Integer.parseInt(req.getParameter("remove"));

           TempFile file = (TempFile) list.get(elem);
           list.remove(elem);
           file.getPart().getFile().delete();

           TempLog item = new TempLog(now, ip, "remove", file.getName());

           log.add(item);
       }
       flog("Listing...");
       forward("list", req, res);
   }

Listado 2: WebTemp.java::doPost(...)

   protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException,
           IOException {
       flog("doPost...");
       if (MultipartHandler.checkContentType(req.getContentType())) {
           List list = (List) getServletContext().getAttribute("list");
           List log = (List) getServletContext().getAttribute("log");

           flog("Uploading...");
           MultipartHandler handler = new MultipartHandler();
           handler.tmpDir = new File(tmpPath);
           handler.prefix = "webtemp_";
           handler.handle(req.getInputStream());

           com.csa.lib.mime.Part part = handler.get("file");
           String comments = handler.getParameter("comments");
           Date now = new Date();
           String ip = req.getRemoteAddr();

           TempFile file = new TempFile(part.getFileName(), part.getLength(), now, ip, comments,
                   part);
           TempLog item = new TempLog(now, ip, "upload", part.getFileName());

           list.add(file);
           log.add(item);
           
           // Limpiar logs antiguos            
           for (int i = 0; i < log.size(); i++) {
               TempLog elem = (TempLog) log.get(i);
               long diff = now.getTime() - elem.getDate().getTime();
               diff = diff / (60*60*1000); // en horas
               if ( diff> (7*24) ) // mas de una semana 
                   log.remove(i);
               i--;
           }

           flog("Added to list (and log)...");
           new Eraser(list, log, file, minutosTimeout * 60 * 1000).start();

       }
       flog("Listing...");
       forward("list", req, res);
   }


History - Extract PDF - Extract Tree as PDF

Last Modified

Sun, May 18 Mon, May 12 Mon, Apr 28 Sun, Apr 13 Mon, Mar 24 Sat, Feb 23 Tue, Feb 19 Sat, Feb 16 Wed, Feb 13

Home| New Wiki