Como usar a biblioteca Multer para upload de arquivos no Node.js?
A biblioteca Multer facilita o upload de arquivos no Node.js, permitindo processar imagens, documentos e outros tipos de arquivos em aplicações Express.js.
1. Instalando o Multer
Antes de começar, instale o Multer:
npm install multer
2. Configurando o Multer
Crie um arquivo uploadConfig.js
para definir o destino e nomeação dos arquivos:
const multer = require('multer');
const path = require('path');
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads/');
},
filename: (req, file, cb) => {
cb(null, `${Date.now()}-${file.originalname}`);
}
});
const upload = multer({ storage });
module.exports = upload;
3. Criando uma rota para upload de arquivos
Agora, criamos um endpoint para receber arquivos:
const express = require('express');
const upload = require('./uploadConfig');
const app = express();
app.post('/upload', upload.single('arquivo'), (req, res) => {
if (!req.file) {
return res.status(400).json({ erro: 'Nenhum arquivo enviado' });
}
res.json({ mensagem: 'Upload realizado com sucesso', arquivo: req.file.filename });
});
app.listen(3000, () => console.log('Servidor rodando na porta 3000'));
4. Enviando arquivos para a API
Para testar o upload, use Postman ou Insomnia e envie uma requisição POST para http://localhost:3000/upload
, anexando um arquivo no campo arquivo
.
A resposta será:
{
"mensagem": "Upload realizado com sucesso",
"arquivo": "1678901234567-imagem.jpg"
}
5. Permitindo múltiplos arquivos
Se precisar enviar vários arquivos por vez:
app.post('/uploads', upload.array('arquivos', 5), (req, res) => {
if (!req.files || req.files.length === 0) {
return res.status(400).json({ erro: 'Nenhum arquivo enviado' });
}
res.json({ mensagem: 'Upload realizado', arquivos: req.files.map(file => file.filename) });
});
Agora, podemos enviar múltiplos arquivos no campo arquivos
.
Conclusão
O Multer facilita o gerenciamento de uploads no Express.js, tornando o processamento de arquivos mais eficiente e seguro.
Por que o upload de arquivos é essencial em aplicações modernas?
A capacidade de enviar e armazenar arquivos é essencial para diversas aplicações, como redes sociais, e-commerces e plataformas de compartilhamento de documentos.
Plataformas como Google Drive, Dropbox e Instagram dependem de sistemas otimizados de upload para armazenar arquivos de forma escalável. APIs modernas utilizam o Multer combinado com serviços como AWS S3 para maior flexibilidade.
Algumas aplicações:
- Armazenamento de imagens de perfil
- Envio de documentos e contratos digitais
- Upload de vídeos e áudios
- Integração com serviços de armazenamento na nuvem
- Processamento de arquivos para análise
Dicas para quem está começando
- Use
multer.diskStorage()
para definir o local de armazenamento. - Valide extensões de arquivos antes de aceitar o upload.
- Teste uploads com Postman ou Insomnia antes da integração com frontend.
- Armazene arquivos sensíveis em serviços de nuvem como AWS S3.
- Defina limites de tamanho de arquivos para evitar problemas de armazenamento.
Contribuições de Lucas Fernandes