resource - "No se permite cargar el recurso local: file:/// C:... jpg" Java EE Tomcat
not allowed to load local resource php (8)
Aquí hay una solución expressjs
simple si solo desea ejecutar esta aplicación localmente y la seguridad no es una preocupación:
En su archivo server.js
o app.js
, agregue lo siguiente:
app.use(''/local-files'', express.static(''/''));
Eso servirá a su directorio raíz TOTAL en /local-files
. Huelga decir que esta es una muy mala idea si planea implementar esta aplicación en cualquier lugar que no sea su máquina local.
Ahora, simplemente puede hacer:
<img src="/local-files/images/mypic.jps"/>
nota: estoy ejecutando macOS. Si está utilizando Windows, es posible que deba buscar y eliminar ''C: /' de la cadena de ruta
Intento recuperar una imagen de mi sistema de archivos después de un buen almacenamiento (en lugar de ponerlo en la base de datos, lo copio en el disco y coloco la ruta a la base de datos)
- Tenía almacenar la imagen en la carpeta c: / images / y suponiendo que el nombre de la ruta completa es c: / images / mypic.jpg
- cuando trato de recuperarlo, establezco el atributo img src en
<img src="c:/images/mypic.jps">
usando algún código java - en la consola del navegador encontré este error
Not allowed to load local resource: file:///C://images//mypic.jpg
Pregunta: ¿cómo solucionar este problema de ruta? ¿Dónde debería almacenar las imágenes? y desde donde debería recuperarlos?
El concepto de ubicación http y ubicación del disco es diferente. Lo que debes hacer es:
- para el archivo subido
summer.jpg
- mueva eso debajo de una ubicación conocida (a la aplicación) en el disco, por ej.
c:/images/summer.jpg
- insertar en el registro db que representa la imagen con el texto
summer.jpg
- para mostrarlo use plain
<img src="images/summer.jpg" />
- necesita algo (por ejemplo, apache) que sirva
c:/images/
en las/images
aplicaciones. Si no puede hacer esto, en el paso n. ° 2 debe guardar en algún lugar debajo de su raíz web, por ejemplo,c:/my-applications/demo-app/build/images
En Chrome, se supone que debes poder permitir esta capacidad con un indicador de tiempo de ejecución --allow-file-access-from-files
Sin embargo, parece que hay un problema con las versiones actuales de Chrome (37, 38) donde esto no funciona a menos que también pase el indicador de tiempo de ejecución --disable-web-security
Esa es una solución inaceptable, excepto quizás como una solución temporal a corto plazo, pero se ha identificado como un problema: https://code.google.com/p/chromium/issues/detail?id=379206
Este error significa que no puede cargar datos directamente desde el sistema de archivos porque hay problemas de seguridad detrás de esto. La única solución que conozco es crear un servicio web para servir archivos de carga.
Muchos navegadores han cambiado sus políticas de seguridad para no permitir más la lectura de datos directamente desde archivos compartidos o incluso recursos locales. Debe ubicar los archivos en algún lugar para que su instancia de tomcat pueda servirlos y poner una url http "regular" en el html que genere. Esto se puede lograr proporcionando un servlet que lea y proporcione el archivo que coloca el archivo en un directorio donde tomcat lo publicará como contenido "estático".
No utilice la RUTA ABSOLUTA para referirse al nombre de la imagen, por ejemplo: C:/xamp/www/Archivos/images/templatemo_image_02_opt_20160401-1244.jpg
. Debe usar la referencia a su ubicación dentro del servidor web. Por ejemplo, usando ../../Archivos/images/templatemo_image_02_opt_20160401-1244.jpg
dependiendo de dónde se está ejecutando su proceso.
Tienes dos alternativas:
El primero es crear un ServletImageLoader que tomaría como parámetro un identificador de su imagen (la ruta de la imagen o un hash) que usará dentro del servlet para manejar su imagen, y se imprimirá en la secuencia de respuesta cargada. imagen del servidor.
El segundo es crear una carpeta dentro de la carpeta ROOT de su aplicación y simplemente guardar la ruta relativa a sus imágenes.
el envío de la etiqueta <img src="c:/images/mypic.jpg">
hará que el navegador del usuario acceda a la imagen desde su sistema de archivos. si tiene que almacenar imágenes en una carpeta ubicada en c:/images
le sugiero que cree un servlet como images.jsp, que como parámetro toma el nombre de un archivo, luego establece el contenido de la respuesta del servlet en una imagen / jpg y luego carga bytes de la imagen de la ubicación del servidor y ponerlo a una respuesta.
¿Pero qué usas para crear tu aplicación? ¿es servlet puro? ¿Primavera? JSF?
Here puedes encontrar información sobre cómo hacerlo.