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

Enviar imagen y mostrarla a continuación

Estas en el tema de Enviar imagen y mostrarla a continuación en el foro de Java en Foros del Web. Hola a tod@s Estoy tratando de hacer un formulario para que el usuario seleccione una imagen de su ordenador para enviarla al servidor, y que ...
  #1 (permalink)  
Antiguo 27/02/2012, 05:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Enviar imagen y mostrarla a continuación

Hola a tod@s
Estoy tratando de hacer un formulario para que el usuario seleccione una imagen de su ordenador para enviarla al servidor, y que a continuación se la muestre en la página de respuesta.
He conseguido enviar la imagen correctamente al servidor (enctype multipart en el form, etc), pero el problema es que al enviarle la página de respuesta al cliente, en la que debería aparecer la foto, ésta no se muestra. La cosa es que si vuelvo a realizar la operación escogiendo la misma imagen, entonces sí aparece. Es como si la primera vez que lo hago no hubiera dado tiempo al servidor a recibir la imagen y al volverlo a hacer ya la muestra porque la imagen está ahí. La imagen la subo al directorio raiz donde están las demás páginas jsp.
¿Hay alguna solución para esto?
He pensado guardar la imagen en una base de datos a ver si así la recupera bien. ¿Podría ser esta la solución? La cosa es que es una aplicación de prueba que estoy haciendo y no quería liarme con bases de datos, pero si no hay otra solución lo tendré que hacer.

Un saludo.
  #2 (permalink)  
Antiguo 27/02/2012, 10:26
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: Enviar imagen y mostrarla a continuación

Hola Nexus10,
lo que tienes que hacer es que el archivo de imagen que sube el cliente, debes guardarlo en tu aplicación web en un lugar visible (dentro del WEB-INF por ejemplo, NO), de esta forma una vez la imagen esté subida podrás linkarla y mostrarla.

¿Que necesitas para linkar? Saber el path de ejecución de tu aplicación, para ello usa ServletContext y pídele el path Real.

Un saludo.
  #3 (permalink)  
Antiguo 27/02/2012, 15:09
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: Enviar imagen y mostrarla a continuación

¡Ah! Gracias ElAthlit , ya lo he conseguido. Efectivamente era como has dicho.

Un saludo.
  #4 (permalink)  
Antiguo 28/02/2012, 07:23
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: Enviar imagen y mostrarla a continuación

Ok, me alegro!

Un saludo
  #5 (permalink)  
Antiguo 16/05/2012, 03:48
 
Fecha de Ingreso: mayo-2012
Mensajes: 6
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Enviar imagen y mostrarla a continuación

Hola a todo@s,
yo tengo el mismo problema que Nexus. El caso es que yo trabajo y tengo mi proyecto situado en C:\MiProyecto. Las imagenes que suben los usarios se guardan en E: , y cuando un usuario quiere acceder al visor de imagenes, lo que se hace es una copia de esas imagenes desde E:\ hasta una carpeta situada en C:\MiProyecto y luego las incorporo desde esa ruta hasta el visor de imagenes, pero al igual que a Nexus10 no se me cargan.
He hecho un getRealPath del servlet context para saber la ruta, y me sale que es C:\Users\ILOPEZ\workspace\.metadata\.plugins\org.e clipse.wst.server.core\tmp0\wtpwebapps\MiProyecto. Si copio las imagenes desde E: a ese directorio si que me las carga bien, pero para mi proyecto no me vale hacer eso. Necesito copiarlas dentro de C:\MiProyecto, que es desde donde yo trabajo
Sabria alguien como hacer para que se puedan visualizar haciendolo asi?

gracias.
  #6 (permalink)  
Antiguo 16/05/2012, 06:02
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: Enviar imagen y mostrarla a continuación

Hola framos87,
la ruta que te da, es la que usa Eclipse para las publicaciones de test/desarrollo o como lo quieras llamar.

La clave es capturar el PATH de ejecución y trabajar sobre ese, es decir, PATH_DE_EJECUCION + TU_PATH.

Cuando o ejecutes en Eclipse te funcionará porque estás usando el path ese largo (pero a ti no te afecta) cuando lo pases a Tomcat o lo que sea, te usará el de Tomcat. Pero a ti tampoco te afectará, porque tu trabajarás sobre el PATH de ejecución.

No se si me explico...
  #7 (permalink)  
Antiguo 16/05/2012, 06:17
 
Fecha de Ingreso: mayo-2012
Mensajes: 6
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Enviar imagen y mostrarla a continuación

Osea que mi path de ejecucion estará dentro de C:\MiProyecto ??
Es que yo creo que si una vez arrancado el servidor copio la imagen dentro de mi path de ejecucion no me la reconocera.
de todas formas como puedo capturar el path de ejecucion?
Ya lo siento es que soy nuevo en esto y me hago un lio...
muchisimas gracias.
  #8 (permalink)  
Antiguo 17/05/2012, 02:03
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: Enviar imagen y mostrarla a continuación

Hola framos87,
el tema es el siguiente:

Situación del escenario:
Tú tienes tu proyecto en C:\MiProyecto OK.

Tendrás una carpeta llamada "upload" por ejemplo, donde la gente te subira los archivos.
Ya tenemos C:\MiProyecto\Upload


Cuando desde el Eclipse lo ejecutes, Eclipse lo que hace es llevarse todo tu proyecto a una ruta "temporal" y MiProyecto\Upload pasarás a tenerlo en otra ruta diferente un tanto larga.

Si tu capturas el path de ejecución, el fichero lo tendrás en PATH_TEMPORAL_LARGO\MiProyecto\Uploads

¿Esto que quiere decir?
Si te vas a C:\MiProyecto\Upload ahí no estará el fichero, estará en esa ruta larga. Pero esto es correcto y está funcionando bien.

Si tu proyecto lo llevas a Tomcat, cuando se ejecute los ficheros estarán en PATH_TOMCAT\MiProyecto\Uploads

Esté donde esté, siempre llegarás a tu carpeta sabiendo el path donde se ejecuta tu aplicación.

Para que te hagas una idea, cuando Eclipse ejecuta tu aplicación se la lleva y la ejecuta desde aquí:

C:\MisProyectos\.metadata\.plugins\org.eclipse.wst .server.core\tmp0\wtpwebapps (suponiendo que tengas ahí tus proyectos)

Por lo tanto, si subes un fichero realmente estará en esa ruta, PERO si trabajas con el path de ejecución, te dará igual esa ruta u otra, porque tu trabajarás con el PATH_EJECUCION\Uploads

ServletContext te da el path de ejecución.


Leete detenidamente lo que te pongo y entenderás como funciona.

Un saludo!
  #9 (permalink)  
Antiguo 21/05/2012, 02:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 6
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Enviar imagen y mostrarla a continuación

Ok muchas gracias. ya lo entiendo, te has explicado muy bien. ya he arreglado el problema.
oie y se podria hacer que la ruta temporal desde donde trabaja eclipse sea la misma que la ruta original del proyecto? o se puede pero no es aconsajable? y una vez te lo llevas a tomcat?

gracias de nuevo. y perdon por tardar en contestar, es que estoy de examenes y habia dejao esto un poco aparacado.

un saludo!
  #10 (permalink)  
Antiguo 21/05/2012, 02:57
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: Enviar imagen y mostrarla a continuación

Hola framos87,
cuando trabajas con Eclipse sin entorno Web, Eclipse trabaja con tu ruta real del proyecto, pero cuando se trabaja en web, Eclipse traslada tu proyecto siempre.

Sobre lo que preguntas.... lo desconozco, yo particularmente no le veo sentido (o ventaja), trabajando con rutas relativas siempre te dará igual donde se esté ejecutando.

Un saludo!!
  #11 (permalink)  
Antiguo 21/05/2012, 03:56
 
Fecha de Ingreso: mayo-2012
Mensajes: 6
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Enviar imagen y mostrarla a continuación

OK. ya me imaginaba que no tenia sentido, era simple curiosidad.
una cosa mas, aunque no se si ya m estoy saliendo del tema.
El caso es tras copiar las imagenes al path real (PATH_TEMPORAL_LARGO\MiProyecto\ImageTemp\1) luego pongo la ruta relativa en el visor de imagenes y me funciona bien, pero solo en Internet Explorer, en firefox no me carga las imagenes. tu sabes porque puede ser eso? te dejo el codigo donde se cargan las imagenes:
<a href="/MiProyecto\ImageTemp\1/File1.jpg"> <img src="/MiProyecto\ImageTemp\1/File1.jpg" class="image0" width="100px" height="95px" ></a>
Ya me he fijado que en la ruta hay barras y contrabarras mezcladas, pero he probado a cambiarlo y sigue sin funcionar.

muchas gracias.

un saludo!
  #12 (permalink)  
Antiguo 21/05/2012, 04:26
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: Enviar imagen y mostrarla a continuación

Hola framos87,
francamente, solo una vez me pasó algo así con un fichero .png, pero fué ese fichero en concreto que lo veia en Internet Explorer y en Firefox no, el resto se veian todo. Un expediente X en mi caso....

Siento no poder ayudarte más.

Un saludo!
  #13 (permalink)  
Antiguo 21/05/2012, 04:41
 
Fecha de Ingreso: mayo-2012
Mensajes: 6
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Enviar imagen y mostrarla a continuación

Bueno no pasa nada. Si me hubieses arreglado esto ya hubiese sido la hostia jaja Tendre que seguir investigando el fallo.
muchas gracias por todo.
un saludo!
  #14 (permalink)  
Antiguo 21/05/2012, 04:50
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 1 mes
Puntos: 78
Respuesta: Enviar imagen y mostrarla a continuación

jejeje, ok!!

Un saludo!

Etiquetas: formulario, jsp
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:22.