Servir imagen en servidor web con Golang

Hoy vamos a ver cómo enviar una imagen al cliente desde Golang, es decir, servir una imagen en un servidor web programado con Go.

Vamos a leer la imagen según su ruta y luego enviarla con los encabezados adecuados al cliente.

Enviar imagen como respuesta HTTP en Golang

Para esto usaremos http.ServeFile, función que recibe los argumentos de http.ResponseWriter, *http.Request y la ruta completa del archivo (podemos servir cualquier tipo de archivo incluyendo imágenes).

Entonces ya no necesitamos programar nuestra función, simplemente invocar a ServeFile.

Antes de servir el archivo necesitamos establecer los encabezados adecuados, sobre todo para el Content-Type.

Para obtener el Content-Type podemos invocar a:

mime.TypeByExtension(filepath.Ext(rutaImagen))

Primero obtenemos la extensión del archivo con filepath.Ext y luego a partir de ella invocamos a mime.TypeByExtension.

Ejemplo

Yo tengo una ruta web definida en donde a partir del id de un producto leo la imagen del sistema de archivos y la envío de vuelta al cliente.

En mi caso estoy usando el toolkit de Gorilla/Mux pero funciona aunque uses el net/http de la biblioteca estándar.

En la línea 2 a la 7 leo el id que se debe pasar por un parámetro GET en la URL.

Luego consulto el producto a partir de ese id, y si existe una foto entonces calculo la ruta completa en la línea 22 para servir la imagen en las líneas 23 y 24.

Si la foto no existe simplemente envío un código de respuesta 404.

Para terminar te dejo con más tutoriales de Go en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario