/Multer

This is an example of how to upload a file with multer "Credit to Jose de Desarrollo Util"

Primary LanguageJavaScriptMIT LicenseMIT

[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url]

Subida y descarga de archivos

Conceptos teóricos

  • La subida de archivos por http tiene un estandar marcado
  • Este estandar indica que el content-type de la solicitud debe ser de tipo multipart/form-data y un boundary.
  • Lo primero indica el tipo de solicitud, que habitualmente es una serie de campos de un formulario, estos campos pueden contener texto plano o un archivo.
  • El boundary, es una secuencia de caracteres que sirve para diferenciar cada una de las partes del mensaje http, ya que todos los campos que se envian van juntos entonces es necesario saber cuando acaba uno y empieza el siguiente.
  • Cuando enviamos la solicitud desde un cliente HTTP o un navegador web, el boundary y el body se crean automaticamente, no tenemos que poner manualmente los content-disposition o content-type. En JS simplemente añadimos la información del formulario y el content type multipart
  • En el servidor debemos obtener cada uno de los valores o archivos, validarlos y almacenarlos o lo que queramos hacer con ellos.

Ejemplo de una solicitud HTTP

Headers

POST /uploads HTTP/1.2
Host: example.com
Content-Type: multipart/form-data;boundary=------------------------d74496d66958873e

Body

--------------------------d74496d66958873e
Content-Disposition: form-data; name="person"
--------------------------d74496d66958873e
Content-Disposition: form-data; name="secret"; filename="file.txt"
Content-Type: text/plain

contents of the file
--------------------------d74496d66958873e
Content-Disposition: form-data; name="imagen1"; filename="Solucion.png"
Content-Type: image/png

�PNG → IHDR♦9☺♠�D�☺sRGB��∟�♦gAMA�� �a♣ pHYs��☺�o�d��IDATx^���D ND�B--------------------------d74496d66958873e--

License

Distributed under the MIT License. See LICENSE.md for more information.