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!