Hola que tal, pues allí te dejo una solución a tu problema:
LOS JSP:
index.jsp
Código HTML:
Ver original<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <form action="${pageContext.request.contextPath}/uploadServlet" method="post" enctype="multipart/form-data"> <input type="file" name="carga"/> <input type="submit" name="Subir"/>
salida.jsp
Código HTML:
Ver original<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> EL ARCHIVO FUE SUBIDO SATISFACTORIAMENTE AL SERVIDOR.
<a href="index.jsp">Subir otro archivo
</a>
El descriptor de despliegue donde configuro el servlet:
web.xml
Código XML:
Ver original<?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name>upload</display-name>
<servlet>
<servlet-name>upload</servlet-name>
<servlet-class>pe.com.slcsccy.upload.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>upload</servlet-name>
<url-pattern>/uploadServlet/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</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 originalpackage pe.com.slcsccy.upload;
import java.io.File;
import java.util.List;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet{
private static final long serialVersionUID = 5597818269713946959L;
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest req,HttpServletResponse res){
try {
//Proceso de la libreria commons.fileupload para obtener el archivo enviado al servidor
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(req);
FileItem item = items.get(0);
//Obtengo datos del archivo enviado
System.out.println("Nombre del archivo:\t"+item.getName());
System.out.println("Tamaño del archivo:\t"+item.getSize()/1024+"Kb");
//Copio el archivo en alguna ruta del servidor:
String nombreArchivo = item.getName();
nombreArchivo = nombreArchivo.substring(nombreArchivo.lastIndexOf("\\"));
item.write(new File("C:\\data\\"+nombreArchivo));
//Envio el control del programa hacia la pagina jsp 'salida.jsp'
req.getRequestDispatcher("/salida.jsp").forward(req, res);
} catch (Exception e) {
e.printStackTrace();
}
}
}
El proyecto completo en eclipse te lo puedes bajar desde
http://sites.google.com/site/carloscacique/upload.zip?attredirects=0&d=1
Saludos.
Carlos Cacique
http://carloscacique.blogspot.com