Procesamiento de archivos - Aceptando imágenes

Clase 27 de 35Curso de Node.js con Hapi

Resumen

En esta clase aprenderemos el manejo de archivos con Hapi. Agregaremos la posibilidad de anexar imágenes a las preguntas. Para esto será necesario modificar el método create del modelo questions.js para que guarde en la base de datos de Firebase el nombre de archivo.

Será necesario también requerir algunos módulos adicionales, o algunas funciones desde esos módulos:

const { writeFile } = require('fs')
const { promisify } = require('util')
const { join } = require('path')

Instalaremos y usaremos el módulo uuid en su versión v1 para manejar nuestros propios nombres de archivo internamente y evitar la duplicidad.

En el controlador de las preguntas incorporamos la lógica del manejo de archivos cuando se ha identificado la presencia del dato image en el buffer del con

Buffer.isBuffer( request.payload.image )

Este campo image debemos incluirlo en el formulario, en la vista con el formulario de respuesta. Finalmente, al recibir el archivo a través del buffer tendremos que escribirlo en el filesystem del servidor, para lo cual usaremos la función writeFile que hemos convertido en promesa y llamado write( args ) con los argumentos correspondientes. Ya para mostrar la imagen en la vista cuando se haya recuperado, sólo bastará con incorporar la etiqueta <img /> con la referencia al archivo almacenado.