Como fazer upload de arquivo CSV com Node.js e salvar no banco de dados
Neste tutorial, será apresentado como fazer upload de arquivo CSV com Node.js e salvar no banco de dados.
Primeiramente, será abordado como receber o arquivo com Node.js.
Em seguida, será explicado como fazer o upload do arquivo.
Por fim, será demonstrado como salvar no banco de dados os dados e o nome do arquivo.
Baixar o código fonte: Download
Full Stack: Curso de React e Node.js: Mais Detalhes do Curso
Playlist completa como fazer upload com Node.js e React: Acessar
Playlist completa como Criar upload de arquivo CSV com React e Node.js: Acessar
Aulas gratuitas do curso de Node.js: Acessar
Para começar, é utilizado como base o projeto da aula "Como ler arquivo CSV e salvar no banco de dados com Node.js".
Em seguida, instalado a biblioteca de upload.
npm install --save multer
Criado o arquivo "services/uploadCsvServices.js", responsável pelo upload utilizando o Multer.
// Incluir as bibliotecas
// Upload de arquivos
const multer = require('multer');
// O módulo path permite interagir com o sistema de arquivos
const path = require('path');
// Realizar upload do arquivo
module.exports = (multer({
// diskStorage permite manipular locar para salvar o arquivo
storage: multer.diskStorage({
// Local para salvar o arquivo
destination: (req, file, cb) => {
cb(null, './public/upload/csv')
},
// Nome que deve ser atribuido ao arquivo
filename: (req, file, cb) => {
cb(null, Date.now().toString() + Math.round(Math.random() * 1E9) + path.extname(file.originalname));
}
}),
// Validar a extensão do arquivo
fileFilter: (req, file, cb) => {
// Verificar se a extensão do arquivo enviado pelo usuário está no array de extensões
const extesaoImg = ['text/csv'].find(formatoAceito => formatoAceito == file.mimetype);
// Retornar TRUE quando a extensão do arquivo é válido
if(extesaoImg){
return cb(null, true);
}
// Retornar FALSE quando a extensão do arquivo é inválido
return cb(null, false);
}
}))
IncluÃdo o arquivo de upload no "app.js".
const upload = require('./services/uploadCsvServices');
Acrescentado a função como middleware na rota.
upload.single('arquivo')
Criado a Models "Arquivo".
npx sequelize-cli model:generate --name Arquivos --attributes arquivo:string
No mesmo comando acima, é criada a migration "Arquivos". Com a migration criada, é necessário executá-la.
npx sequelize-cli db:migrate
Para finalizar, o nome do arquivo é salvo no banco de dados.
db.Arquivos.create({arquivo: req.file.filename})
Baixar o código-fonte completo do projeto.
Bom, era isso. Espero que o tutorial tenha sido útil!