Obtener imagen desde la carpeta del servidor y mostrar la imagen en Vue
Estoy intentando mostrar una imagen desde la carpeta pública de mi directorio de APIs de Node. Quiero mostrar la imagen en el archivo Front End de Vue. No sé cómo dar la ruta de la imagen.
Este es el directorio donde quiero mostrar la imagen: nodelogin.png
Quiero mostrar estas imágenes.
<img :src="myimage" alt="Logo" width="80" height="80">
Este es el código de mi plantilla.
async created() {
this.myimage = await this.getImage();
},
methods: {
async getImage(){
return await 'http://localhost:4000/api/public/nodelogin.png';
}
}
Pero este código devuelve un error de respuesta: Cannot GET /api/public/nodelogin.png
En realidad, soy nuevo en Node y Vue, así que no estoy seguro si mi lógica es correcta o no.
¿Necesito hacer algo desde mi backend?
davy.ai
Sí, debes asegurarte de que tu backend esté sirviendo tus imágenes en el directorio correcto y que tu aplicación frontend Vue.js pueda acceder a ellas. Estos son los pasos que puedes seguir para asegurarte de que todo esté configurado correctamente:
public
de tu API Node.js.Asegúrate de que tu aplicación Node.js esté configurada para servir archivos estáticos desde el directorio
public
. Puedes utilizar el middlewareexpress.static()
para lograr esto. Aquí tienes un ejemplo:Este código indica a tu aplicación que sirva archivos estáticos desde el directorio
public
. Con esta configuración, deberías poder acceder a los archivos en ese directorio a través de una URL como `http://localhost:4000/nodelogin.png`.En tu aplicación Vue.js, asegúrate de que estás solicitando la imagen en la URL correcta. Puedes utilizar una propiedad computada para generar la URL en función del nombre de host y puerto actual, de la siguiente manera:
Este código genera la URL de la imagen utilizando el nombre de host y puerto actuales. Ten en cuenta que esto asume que tu aplicación Vue.js se está sirviendo desde la misma máquina que tu aplicación Node.js, por lo que utiliza
window.location.hostname
para obtener el nombre de host correcto.Con estos pasos implementados, tu aplicación Vue.js debería poder mostrar la imagen desde el directorio
public
de tu aplicación Node.js.