13/01/06                                                                                                

 
Estadisticas y contadores web gratis
Manuales Oposiciones
 
   Upload ( subir a un servidor )  un fichero en Java III

 

Bueno , por fin he dado en el clavo .  Hace falta otro ladrillo , que es la libreria commons IO : downl...commons-io.cgi

Tras bajarme esta libreria y leer un poco el uso de commons fileupload en  using.html modifico algo  el código

 
import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
import org.apache.commons.io.output.*;


import java.util.*;
/**
 *
 * @author original : Roberto Canales - Modificado por javcasta2002@yahoo.com
 * @version
 */
public class uploadFichero extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet</title>");
        out.println("</head>");
        out.println("<body>");

        System.out.println("Comenzamos procesamiento ficheros");

        procesaFicheros(request,out);

        out.println("</body>");
        out.println("</html>");

        out.close();
    }


    void depura(String cadena)
    {
        System.out.println("El error es " + cadena);
    }

    public boolean procesaFicheros(HttpServletRequest req, PrintWriter out ) {
       
        
        try {
        // Check that we have a file upload request
        boolean isMultipart = FileUpload.isMultipartContent(req);
        // Create a factory for disk-based file items
        FileItemFactory factory = new DiskFileItemFactory();

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);

        // Parse the request
        List /* FileItem */ items = upload.parseRequest(req);
        
             if(items == null)
            {
                depura("La lista es nula");
                return false;
            }

            out.print("<br>El número de ficheros subidos es: " +  items.size());
        // Iteramos por cada fichero
	    Iterator i = items.iterator();
            FileItem actual = null;
            depura("estamos en la iteración");
            

            while (i.hasNext())
            {
                actual = (FileItem)i.next();
                String fileName = actual.getName();
                out.println("<br>Nos han subido el fichero" + fileName);

                // construimos un objeto file para recuperar el trayecto completo
                File fichero = new File(fileName);
                depura("El nombre del fichero es " + fichero.getName());

                // nos quedamos solo con el nombre y descartamos el path
                fichero = new  File("c:\\ficherossubidos\\" + fichero.getName());

                // escribimos el fichero colgando del nuevo path
                actual.write(fichero);
            }
        }
        catch (
            Exception e){depura("Error de Aplicación " + e.getMessage());
            return false;
        }

        return true;
    }

    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
}

 

 

 
  Y lo he probado con el Tomcat del NetBeans 4.1 y ha funcionado sin problemas .  
  Por si deseas ver los precedentes de esta página empieza en :

* Apache y ASP y UPLOAD CON ASP

* UPLOAD CON JAVA I

* UPLOAD CON JAVA II