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
Veja também: