Foros del Web » Programación para mayores de 30 ;) » Java »

¿Cómo leo un elemento type="file" en un servlet?

Estas en el tema de ¿Cómo leo un elemento type="file" en un servlet? en el foro de Java en Foros del Web. Hola, tengo un problema, tengo una aplicación web donde necesito que el usuario pueda enviar un archivo en formato xml, y tengo que recuperar los ...
  #1 (permalink)  
Antiguo 08/06/2009, 03:52
 
Fecha de Ingreso: noviembre-2007
Ubicación: Madrid
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
¿Cómo leo un elemento type="file" en un servlet?

Hola,

tengo un problema, tengo una aplicación web donde necesito que el usuario pueda enviar un archivo en formato xml, y tengo que recuperar los datos de ese fichero en un servlet. El código que tengo es el siguiente:

Código HTML:
<form name="form_balance" action="/servlets/pruebasServlet"  enctype="multipart/form-data">
<input type="file" name="adjunto" />
<input type="submit" />
</form> 
en el servlet, cuando hago el req.getParameter("adjunto") recibo solo el nombre del archivo.
¿Alguien me puede ayudar?

gracias
  #2 (permalink)  
Antiguo 08/06/2009, 05:08
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Wenas

Con o'reilly. En este mismo foro ya hay una contestacion al respecto. Busca y encontraras.

Saludos.
  #3 (permalink)  
Antiguo 08/06/2009, 06:39
Avatar de frilex  
Fecha de Ingreso: junio-2009
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Exacto, como dice elAntonie. Puedes hacerlo de todas formas, recuperando un inputStream...
Pero veo que ya utilizas multipart, no?
  #4 (permalink)  
Antiguo 09/06/2009, 02:47
 
Fecha de Ingreso: noviembre-2007
Ubicación: Madrid
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Hola, gracias por vuestra ayuda.

He hecho lo siguiente:

Código:
String adjunto = req.getParameter("adjunto");
String ruta = "c:/";
String archivo = ruta + adjunto;
int buffer= 2048;
byte data[] = new byte[buffer];
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(archivo));
BufferedInputStream bis = new BufferedInputStream(new DataInputStream(req.getInputStream()));
int count;
while ((count = bis.read(data, 0, buffer)) != -1) {
	bos.write(data, 0, count);
}
bos.flush();
bos.close();
bis.close();
Con esto consigo grabar un archivo en la ruta que le pongo pero esta vacio, con 0 bytes. Es como si el archivo que le paso estuviera vacio, que llega solo el nombre. ¿Alguien sabe porqué no funciona?

gracias
  #5 (permalink)  
Antiguo 09/06/2009, 04:42
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Me cito

Cita:
Iniciado por elAntonie Ver Mensaje
Con o'reilly. En este mismo foro ya hay una contestacion al respecto. Busca y encontraras.
  #6 (permalink)  
Antiguo 09/06/2009, 05:48
 
Fecha de Ingreso: noviembre-2007
Ubicación: Madrid
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Gracias denuevo por tu superayuda, ya me he buscado 30 páginas de este mismo foro y no he encontrado nada. Y no tengo mucho tiempo para leerme todo el foro. Se que es muy fácil preguntar y que te den las cosas hechas, pero yo solo lo hago cuando ya no encuentro nada de tanto buscar, y porque aquí siempre me han guiado.
Y ni encuentro nada concreto con o'reilly ni nada en este foro.
Yo agradezco a todo el mundo que me quiera ayudar, porque yo cuando he podido lo he hecho, pero siempre intento dejarselo claro, o al menos digo donde puede guiarse.
Repito otra vez, te agradezco tu ayuda, pero lo siento mucho, debo ser muy torpe porque me es insuficiente. Tendré que seguir buscando....
  #7 (permalink)  
Antiguo 09/06/2009, 06:35
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Pues macho, yo lo he encontrado a la primera.

http://www.forosdelweb.com/f45/fileu...-datos-699311/

Saludos.

Pd. perdon era oreilly sin apostrofo.
  #8 (permalink)  
Antiguo 10/06/2009, 04:39
 
Fecha de Ingreso: noviembre-2007
Ubicación: Madrid
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Esque se ve que tu llevas mas años en esto.
Te agradezco tu ayuda.

Les pongo como lo solucioné por si a alguien le puede ayudar esta otra alternativa. Lo que hago es leer el archivo que envia el usuario desde su local y lo copio en el servidor para luego hacer lo que se necesite:

Código:
public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException{
		ServletContext context = (ServletContext) this.getServletContext();
		String ruta = context.getRealPath("/") + "xml\\";   //<--- aquí la ruta donde quiero guardarlo.
		MultipartParser mp = new MultipartParser(req, 10*1024*1024);
		Part part;
		
		while((part = mp.readNextPart())!=null){
			if (part.isFile()){//Es un fichero.
				FilePart filepart = (FilePart) part;
				InputStream is = filepart.getInputStream();
				StringWriter sw = new StringWriter();
	
				int tempo = is.read();
				while (tempo != -1 ) {
					sw.write(tempo);
					tempo = is.read();					
				}
				File dir = new File(ruta + filepart.getFileName());
				stringToFile(sw.toString(),dir);
			}
		}
	}
	
	/**
	 * Función que graba en un archivo el string que ha leido del fichero xml enviado por el usuario
	 * @param archivo 
	 * @param dir
	 */
	public void stringToFile(String archivo, File dir){
		FileWriter fwriter = null;
		BufferedWriter bwriter = null;
		try {
			fwriter = new FileWriter(dir);
			bwriter = new BufferedWriter(fwriter);
			bwriter.write(archivo);
			bwriter.close();
			fwriter.close();			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

Espero les sirva a alguien.
  #9 (permalink)  
Antiguo 10/06/2009, 05:39
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Cita:
Iniciado por Jeibi Ver Mensaje
Esque se ve que tu llevas mas años en esto.
Me estas llamando viejo??



Saludos.
  #10 (permalink)  
Antiguo 15/06/2009, 03:10
 
Fecha de Ingreso: noviembre-2007
Ubicación: Madrid
Mensajes: 96
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: ¿Cómo leo un elemento type="file" en un servlet?

Posiblemente seas mas joven que yo, pero yo tengo mucho que aprender todavía :D

saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:47.