Como usar a biblioteca Multer para upload de arquivos no Node.js?

O Multer é uma biblioteca do Node.js que facilita o upload de arquivos em aplicações Express.js, permitindo armazená-los no servidor.

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.

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

Compartilhe este tutorial: Como usar a biblioteca Multer para upload de arquivos no Node.js?

Compartilhe este tutorial

Continue aprendendo:

Como configurar um servidor HTTPS no Express.js?

O Express.js permite configurar um servidor HTTPS utilizando certificados SSL para comunicação segura entre cliente e servidor.

Tutorial anterior

Como lidar com sessões e cookies no Express.js?

No Express.js, as sessões e cookies são utilizados para armazenar informações temporárias sobre os usuários, facilitando a autenticação e personalização.

Próximo tutorial