ExpressJS é um framework minimalista e flexível para Node.js que fornece um conjunto robusto de recursos para construir aplicativos web e móveis. Um dos recursos mais poderosos que o ExpressJS oferece é a capacidade de definir e trabalhar com rotas. Neste capítulo, vamos nos concentrar em como trabalhar com uploads de arquivos nas rotas usando ExpressJS.
Trabalhar com uploads de arquivos é uma tarefa comum em aplicações web. Seja para permitir que os usuários façam upload de imagens de perfil, documentos ou qualquer outro tipo de arquivo, você precisará lidar com o upload de arquivos em algum momento. Felizmente, o ExpressJS torna isso relativamente simples.
Configurando o Middleware
Antes de podermos começar a aceitar uploads de arquivos, precisamos configurar um middleware para processá-los. O middleware é uma função que tem acesso ao objeto de solicitação (req), ao objeto de resposta (res) e à próxima função de middleware no ciclo de solicitação/resposta do aplicativo.
Para lidar com uploads de arquivos, vamos usar um pacote chamado 'multer'. O Multer é um middleware node.js para lidar com o 'multipart/form-data', que é usado para o upload de arquivos. Ele é muito fácil de usar e bem documentado. Para começar, você precisa instalá-lo em seu projeto:
npm install --save multer
Depois de instalado, você pode requerê-lo em seu aplicativo e configurar um local para armazenar os arquivos enviados:
const multer = require('multer') const upload = multer({ dest: 'uploads/' })
Aqui, estamos dizendo ao Multer para armazenar os arquivos enviados na pasta 'uploads' em nosso diretório raiz.
Definindo a Rota
Com o Multer configurado, podemos agora definir uma rota para aceitar uploads de arquivos. Vamos definir uma rota POST em '/upload' que aceita um único arquivo:
app.post('/upload', upload.single('file'), (req, res) => { res.send('Arquivo enviado com sucesso.') })
Na rota acima, 'upload.single('file')' é um middleware que processa o upload. 'file' é o nome do campo no formulário que contém o arquivo. A função de callback é chamada depois que o arquivo foi carregado com sucesso.
Trabalhando com os Arquivos Enviados
Depois que um arquivo é enviado, você pode acessar os dados do arquivo através do objeto 'req.file'. Este objeto contém informações úteis como o nome original do arquivo, o nome do arquivo no servidor, o tipo de arquivo e o tamanho do arquivo.
Você pode usar essas informações para validar o arquivo, renomeá-lo, movê-lo ou fazer qualquer outra coisa que você precisar. Aqui está um exemplo de como você pode renomear o arquivo usando o módulo 'fs' do Node.js:
const fs = require('fs') app.post('/upload', upload.single('file'), (req, res) => { fs.rename(req.file.path, 'uploads/' + req.file.originalname, err => { if (err) return res.send('Erro ao renomear o arquivo.') res.send('Arquivo enviado e renomeado com sucesso.') }) })
Neste exemplo, estamos renomeando o arquivo para o seu nome original. Se houver um erro ao renomear o arquivo, enviamos uma mensagem de erro. Caso contrário, enviamos uma mensagem de sucesso.
Conclusão
Trabalhar com uploads de arquivos no ExpressJS é simples e direto. Com o middleware Multer, você pode facilmente aceitar uploads de arquivos, acessar informações sobre os arquivos enviados e manipular esses arquivos conforme necessário. Este é apenas um exemplo básico do que você pode fazer com uploads de arquivos no ExpressJS. A capacidade de aceitar e processar uploads de arquivos é uma habilidade essencial para qualquer desenvolvedor web e é apenas um dos muitos recursos poderosos que o ExpressJS oferece.