Como fazer upload de arquivos em uma API Node.js?
O upload de arquivos é um recurso comum em APIs para armazenar imagens, documentos e outros arquivos. No Node.js, utilizamos a biblioteca Multer para lidar com esse processo.
1. Instalando as dependências
Para gerenciar o upload de arquivos, instale o pacote multer
:
npm install multer
2. Configurando o Multer
Crie um arquivo uploadConfig.js
para configurar o destino dos arquivos enviados:
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, podemos criar um endpoint para receber arquivos enviados pelo cliente:
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
com um campo arquivo
do tipo file.
A resposta será algo como:
{
"mensagem": "Upload realizado com sucesso",
"arquivo": "1678901234567-imagem.jpg"
}
5. Permitindo múltiplos arquivos
Se precisar enviar mais de um arquivo por vez, altere a rota:
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, ao enviar vários arquivos no campo arquivos
, a resposta conterá uma lista dos nomes dos arquivos armazenados.
Conclusão
O Multer facilita o upload de arquivos no Express.js, permitindo armazenar imagens, documentos e outros formatos de maneira eficiente. Podemos definir regras de tamanho, extensões permitidas e armazenar os arquivos em diferentes destinos.
Por que o upload de arquivos é essencial em aplicações modernas?
O upload de arquivos é um recurso essencial para diversas aplicações, como redes sociais, e-commerces e plataformas de compartilhamento de documentos.
Serviços como Google Drive, Dropbox e Instagram dependem de sistemas de upload otimizados para armazenar e servir arquivos de forma escalável. APIs modernas utilizam ferramentas como Multer e AWS S3 para gerenciar arquivos com segurança e eficiência.
Algumas aplicações:
- Armazenamento de imagens de perfil
- Envio de documentos e contratos digitais
- Upload de vídeos e áudios
- Gerenciamento de arquivos em sistemas de nuvem
- Integração com serviços de armazenamento como AWS S3
Dicas para quem está começando
- Use
multer.diskStorage()
para definir o destino dos arquivos. - Limite o tamanho máximo dos arquivos para evitar sobrecarga.
- Valide extensões de arquivos antes de armazená-los.
- Teste uploads com Postman ou Insomnia antes da integração com frontend.
- Para armazenar arquivos na nuvem, utilize serviços como AWS S3 ou Firebase Storage.
Contribuições de Henrique Almeida