Ver Mensaje Individual
  #7 (permalink)  
Antiguo 24/05/2010, 22:24
ccacique
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Subir un fichero con jsp

Hola que tal, pues allí te dejo una solución a tu problema:

LOS JSP:
index.jsp
Código HTML:
Ver original
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2.    pageEncoding="ISO-8859-1"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  5. <title>Insert title here</title>
  6. </head>
  7. <form action="${pageContext.request.contextPath}/uploadServlet" method="post" enctype="multipart/form-data">
  8.     <input type="file" name="carga"/>
  9.     <input type="submit" name="Subir"/>
  10. </form>
  11. </body>
  12. </html>

salida.jsp
Código HTML:
Ver original
  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2.    pageEncoding="ISO-8859-1"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  5. <title>Insert title here</title>
  6. </head>
  7. EL ARCHIVO FUE SUBIDO SATISFACTORIAMENTE AL SERVIDOR.
  8. <a href="index.jsp">Subir otro archivo</a>
  9. </body>
  10. </html>

El descriptor de despliegue donde configuro el servlet:
web.xml
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  3.     <display-name>upload</display-name>
  4.     <servlet>
  5.         <servlet-name>upload</servlet-name>
  6.         <servlet-class>pe.com.slcsccy.upload.UploadServlet</servlet-class>
  7.     </servlet>
  8.     <servlet-mapping>
  9.         <servlet-name>upload</servlet-name>
  10.         <url-pattern>/uploadServlet/*</url-pattern>
  11.     </servlet-mapping>
  12.     <welcome-file-list>
  13.         <welcome-file>index.html</welcome-file>
  14.         <welcome-file>index.htm</welcome-file>
  15.         <welcome-file>index.jsp</welcome-file>
  16.         <welcome-file>default.html</welcome-file>
  17.         <welcome-file>default.htm</welcome-file>
  18.         <welcome-file>default.jsp</welcome-file>
  19.     </welcome-file-list>
  20. </web-app>

Y por ultimo y más importante el servlet que realiza el proceso de recepción del archivo, procesa el archivo, lo guarda en una carpeta en el servidor y redirige el control del programa hacia la página salida.jsp
UploadServlet.java
Código C:
Ver original
  1. package pe.com.slcsccy.upload;
  2.  
  3. import java.io.File;
  4. import java.util.List;
  5.  
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import org.apache.commons.fileupload.FileItem;
  11. import org.apache.commons.fileupload.FileItemFactory;
  12. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  13. import org.apache.commons.fileupload.servlet.ServletFileUpload;
  14.  
  15. public class UploadServlet extends HttpServlet{
  16.  
  17.     private static final long serialVersionUID = 5597818269713946959L;
  18.    
  19.     @SuppressWarnings("unchecked")
  20.     public void doPost(HttpServletRequest req,HttpServletResponse res){
  21.         try {
  22.             //Proceso de la libreria commons.fileupload para obtener el archivo enviado al servidor
  23.             FileItemFactory factory = new DiskFileItemFactory();
  24.             ServletFileUpload upload = new ServletFileUpload(factory);
  25.             List<FileItem> items = upload.parseRequest(req);
  26.             FileItem item = items.get(0);
  27.            
  28.             //Obtengo datos del archivo enviado
  29.             System.out.println("Nombre del archivo:\t"+item.getName());
  30.             System.out.println("Tamaño del archivo:\t"+item.getSize()/1024+"Kb");
  31.            
  32.             //Copio el archivo en alguna ruta del servidor:
  33.             String nombreArchivo = item.getName();
  34.             nombreArchivo = nombreArchivo.substring(nombreArchivo.lastIndexOf("\\"));
  35.             item.write(new File("C:\\data\\"+nombreArchivo));
  36.            
  37.             //Envio el control del programa hacia la pagina jsp 'salida.jsp'
  38.             req.getRequestDispatcher("/salida.jsp").forward(req, res);
  39.         } catch (Exception e) {
  40.             e.printStackTrace();
  41.         }
  42.     }
  43. }

El proyecto completo en eclipse te lo puedes bajar desde
http://sites.google.com/site/carloscacique/upload.zip?attredirects=0&amp;d=1

Saludos.
Carlos Cacique
http://carloscacique.blogspot.com