Multer

Multer para upload de arquivos

Instalação:

$ yarn add multer

Cria-se uma pasta tmp/uploads/ para armazenar os uploads da aplicação (fora de src).

Arquivo src/app/config/multer.js

Exemplo da estrutura inicial das configurações do multer:

import multer from 'multer';
import crypto from 'crypto';
import { extname, resolve } from 'path';
export default {
storage: multer.diskStorage({
destination: resolve(__dirname, '..', '..', 'tmp', 'uploads'),
filename: (req, file, cb) => {
crypto.randomBytes(16, (err, res) => {
if (err) return cb(err);
return cb(null, res.toString('hex') + extname(file.originalname));
})
},
}),
};

Arquivo src/routes.js

Importar as configurações

import multer from 'multer';
import multerConfig from './config/multer';

Definir após const routes:

const upload = multer(multerConfig);

Rota com upload utilizando o Multer:

routes.post('/files', upload.single('file'), FileController.store);