Skip to content

Instantly share code, notes, and snippets.

@rodrigogonn
Last active September 22, 2020 13:14
Show Gist options
  • Save rodrigogonn/977f958642f5c02ac62ffcfc020430cf to your computer and use it in GitHub Desktop.
Save rodrigogonn/977f958642f5c02ac62ffcfc020430cf to your computer and use it in GitHub Desktop.
Recebendo Arquivos via POST com Node

Recebendo arquivos via POST com Node

A biblioteca formidable é usada para converter a informação do form, especialmente para arquivos de upload. É fácil de usar e integrar ao projeto.

Exemplo de html que deixa usuário enviar arquivos:

<form method="POST" action="/submit-form" enctype="multipart/form-data">
  <input type="file" name="document" />
  <input type="submit" />
</form>

Vamos usar com o express.

Para instalar:

npm install formidable express

Exemplo de uso:

const express = require('express'); 
const fs = require('fs');
const formidable = require('formidable'); 
   
const app = express(); 
   
app.post('/submit-form', (req, res) => { 
  const form = new formidable.IncomingForm();
  
  form.parse(req, function(err, fields, files){
    console.log('Fields', fields);
    console.log('Files', files);
    
    if (files.audio) {
      const audio = fs.createReadStream(files.audio.path);
      // Código que faz algo com o audio
    }
    
    for (const file of Object.entries(files)) {
      console.log(file)
    }
  });
});
   
app.listen(3000, () => { 
    console.log('Server listening on Port 3000'); 
}); 

Por padrão, ele só aceita arquivos de até 200 MB, se tentarmos enviar mais que isso, ele manda um erro pro cliente. Podemos alterar o limite usando a propriedade maxFileSize:

const form = new formidable.IncomingForm();
form.maxFileSize = 500 * 1024 * 1024; // Aqui mudamos pra 500 MB

Podemos fazer uma requisição no postman para conferir os logs no servidor

request image

Veja também:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment