¿Cómo descargar imágenes de la misma carpeta donde se carga la imagen?

Estoy creando un proyecto en el que el usuario puede subir su foto. Esta foto está almacenada en la carpeta "images/uploads/filename". Cuando se crea su perfil y se va a mostrar la foto, uso el <img> etiqueta con src como "imágenes/cargas/nombre de archivo", pero la foto no aparece. Si copio manualmente la foto a una carpeta adyacente "images/abc/filename" y luego la uso como fuente, entonces funciona.

¿Cómo se produce esto y cómo puedo solucionarlo? Necesito usar la misma carpeta para cargar y descargar fotos.

preguntado el 03 de mayo de 12 a las 19:05

2 Respuestas

Eso puede suceder si está ejecutando la aplicación web como un proyecto IDE y está almacenando las imágenes cargadas en el espacio del proyecto del IDE. Los cambios en la carpeta del proyecto del IDE que se realizan externamente (como por su código de servlet) no se reflejan inmediatamente en la carpeta de trabajo del servidor implementado. Solo cuando lo toque (actualizando el proyecto) o copiándolo (como descubrió), se reflejará.

Después de todo, almacenar los archivos cargados en la carpeta de implementación de la aplicación web es una mala idea. Esos archivos se perderán cada vez que vuelva a implementar la aplicación web, simplemente porque esos archivos no están contenidos en el archivo WAR original.

Debe almacenarlos en algún lugar fuera de la carpeta de implementación de la aplicación web en una ruta fija diferente como /var/webapp/uploads. No debe utilizar rutas relativas o getRealPath() para crear el File objeto a su alrededor. Solo usa una ruta fija. Siempre puede hacer que la ruta fija sea configurable como una configuración de parámetro de contexto, un argumento de VM, una configuración de archivo de propiedades o incluso una entrada JNDI.

Luego, para servirlo en la red mundial, simplemente agregue exactamente esa ruta como otro docroot a la configuración del servidor. No está claro qué servidor estás usando, pero en Tomcat es cuestión de agregar otro <Context> de las personas acusadas injustamente llamadas server.xml.

Ver también:

Respondido el 20 de junio de 20 a las 10:06

Asegúrese de tener la ruta correcta e incluya la extensión de la imagen

solo para probar, coloque su etiqueta img dentro de index.php

<img src="images/abc/filename.jpg">

/raíz/index.php

ahora pon tu imagen en tu carpeta abc/

/root/images/abc/nombre de archivo.jpg

Esto debería mostrar la imagen.


si tiene su etiqueta img dentro de otra carpeta en la raíz como a continuación

/raíz/usuario/index.php

ahora, cuando use su etiqueta img, use esta ruta (enlace relativo):

<img src="../images/abc/filename.jpg">

tenga en cuenta el comienzo de la ruta de la imagen "../" esto se usa para volver a la raíz.


si el archivo php o html que contiene la etiqueta img es aún más profundo, solo recuerde agregar ../ para cada nivel, 2 carpetas de profundidad que serían:

<img src="../../images/abc/filename.jpg">


La pregunta era bastante vaga, así que espero que esto sea lo que está buscando.

hágamelo saber y si esto está mal, explique un poco más e intentaré ayudar :)

contestado el 03 de mayo de 12 a las 19:05

Intenté probar como mencionaste [código] pero el resultado es el mismo. estoy usando jsp y tomo el src de la imagen de la base de datos en una variable de cadena. cadena src = "imagen/abc/nombre de archivo.jpg" ['código'] " / > esto funciona, pero string src = "image/uploads/filename.jpg" ['code'] " / > no funciona, el problema parece estar en la carpeta de subidas. ¿Es porque uso la misma carpeta para almacenar la foto que suben los usuarios? - rakmo

¿Has hecho que tu carpeta de subidas sea escribible 0777? también en su secuencia de comandos de carga, ¿cómo ha manejado la creación de carpetas y la carga de imágenes en carpetas particulares? ¿Puede mostrar su bloque de código? Wesley

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.