post icon

Subir ficheros al servidor con JSP

Una de las opciones más utilizadas en las aplicaciones web son el upload de ficheros de cualquier tipo, hacerlo con JSP es lo que veremos hoy, para que desde la PC cliente lo subamos al servidor y de ahí hagamos con el lo que querramos.

Necesitaremos agregar 2 librerías para ellos a nuestro proyecto: commons-io y commoms-fileupload, yo lo desplegaré sobre Apache Tomcat, aunque ustedes pueden cambiar de servidor si así lo quieren.

El ejemplo será con una interfaz simple donde tendremos un caja de texto, y dos botones uno de examinar y otro de enviar respectivamente, el código es como sigue:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"
    import="java.util.*"
    import="org.apache.commons.fileupload.*"
    import="org.apache.commons.fileupload.servlet.*"
    import="org.apache.commons.fileupload.disk.*"
    import="java.io.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Subidor Devtroce</title>
</head>
<body>
	<form action=up.jsp method=post enctype=multipart/form-data>
		<table>
			<tr>
			<td>Fichero</td>
			<td><input type=file name=fichero></td>
			</tr>
			<tr><td colspan=2><input type=submit value=enviar name=enviar>
			</td>
			</tr>
		</table>
	</form>
 
	<!-- codigo para subir el fichero al servidor-->
	<%
		//Ruta donde se guardara el fichero
		File destino = new File("C:\\Devtroce\\Uploads\\");
		ServletRequestContext src = new ServletRequestContext(request);
 
		if(ServletFileUpload.isMultipartContent(src)){
			DiskFileItemFactory factory = new DiskFileItemFactory((1024*1024),destino);
			ServletFileUpload upload = new  ServletFileUpload(factory);
 
			java.util.List lista = upload.parseRequest(src);
			File file = null;
			java.util.Iterator it = lista.iterator();
 
			while(it.hasNext()){
				FileItem item=(FileItem)it.next();
				if(item.isFormField())
					out.println(item.getFieldName()+"<br>");
				else
				{
					file=new File(item.getName());
					item.write(new File(destino,file.getName()));
					out.println("Fichero subido");
				} // end if
			} // end while
		} // end if
	%>
</body>
</html>

Se verá algo asi, aunque estos controles que verán no tendrán funcionalidad en si

Fichero

Articulos Relacionados:

9 Comentarios

Deja tu Comentario
  1. rojo MEXICO Google Chrome Windows
    13 abril 2011 at 02:30 #

    que tal gracias, me ayudo mucho! pero … a mi me marca error en java.util.List lista = upload.parseRequest(src);
    ya verifique que tenga las librerias estoy usando neatbeans gracias de antemano
    Saludos!

    • rojo MEXICO Google Chrome Windows
      13 abril 2011 at 02:48 #

      Gracias de verdad, ya encontré el error no me estaba leyendo una librería… de verdad que funciona este código! Gracias nuevamente y estamos en contacto!

  2. Javalex MEXICO Google Chrome Windows
    2 marzo 2011 at 15:34 #

    Hola que tal, soy un usuario de la Ciudad de Mexico, agradezco mucho este ejemplo, me ha funcionado bien y ahora quiero utilizarlo para pasar el archivo que se carga, quiero pasarlo directamente a otro jsp donde valide los datos de ese archivo y de ahí lo carge a una base de datos.

    Pero primero, lo primero, alguna idea de como hacer para pasar el archivo que subes a otro jsp para validar el archivo, saludos.

  3. Bener ECUADOR Mozilla Firefox Ubuntu Linux
    14 febrero 2011 at 01:45 #

    Saludos tengo un problema en esta linea no me reconoce el src ServletFileUpload.isMultipartContent(src)

    Que puede ser, he copiado el codigo tal cual esta; y de igual manera he colgado las librerias

    Saludos

    • Javalex MEXICO Google Chrome Windows
      2 marzo 2011 at 15:38 #

      a mi me paso a la hora de correrlo en mi servidor, checa si tienes las librerías commons, si usas Eclipse, indicale la ruta de tus librerias, si estas trabajando con Tomcat, checa que esten en la carpeta lib, pero el hecho de no corra o no reconzca el src es por las librerias, saludos

  4. Salco Mozilla Firefox Windows
    28 noviembre 2010 at 01:23 #

    Pues crea primero el usuario en una página aparte y despues redirecciona a la página en donde le pides que seleccione su foto de perfil, un ejemplo sería la pagina1.jsp que dice Paso 1. ingrese su información personal y despues que le de continuar, guardas y redireccionas en la página2.jsp que dice Paso 2. seleccione su foto de perfil.
    espero q te sirva en caso de que no puedas hacerlo en una sola pagina.

  5. Daniel UNITED STATES Opera Windows
    27 noviembre 2010 at 03:28 #

    Muy bueno me sirvio bastante…pero que pasa si en el formulario no solo hay un input tipo file si no que hay mas campos por llenar…por ejemplo hay campo donde el usuario escribe su nombre, y luego selecciona su foto…y luego al presionar enviar…como obtengo lo que puso el campo donde escribio su nombre…es que si pongo String nombre = request.getParameter(“nombre”) (nombre es el nombre de mi campo XD ) pero me tira null a la hora de obtenerlo…que debo hacer…?

  6. Salco Mozilla Firefox Windows
    18 noviembre 2010 at 23:51 #

    Muchisimas gracias! :)

  7. JEAN CARLO MEXICO Internet Explorer Windows
    24 septiembre 2010 at 22:26 #

    Como serìa este script de jsp pero ahora usando Servlets para enviar a base de datos de Oracle 10g de

Responder