Cursos / Informática para Internet / Desenvolvimento Backend / Aula
Até o momento o upload está sendo feito, mas ainda não é possível controlá-lo muito bem. Por exemplo, o arquivo de upload gera um nome aleatório e sem extensão. Para melhorar isso, acompanhe a aula e realize as alterações necessárias.
O mecanismo de armazenamento em disco ajudará a controlar o local onde será guardado o arquivo. Para isso, é necessário adicionar as seguintes instruções no código do arquivo posts.rota.js.
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'public/uploads')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + "-" + Date.now() + path.extname(file.originalname))
}
})
Seguindo os passos anteriores, o nome do arquivo e o destino já estão sendo controlados. Porém, o upload ainda aceita todos os tipos de arquivo e isso não é interessante para a aplicação.
Para mudar isso, acompanhe a aula e crie, ainda em posts.rota.js, a seguinte função:
const fileFilter = (req, file, cb) => {
const extensoes = /jpeg|jpg/i
if (extensoes.test(path.extname(file.originalname))){
cb(null, true)
}else{
return cb('Arquivo não suportado. Apenas jpg e jpeg são suportados.')
}
}
Após isso, altere a inicialização do multer para efetivar as mudanças. Deve ficar dessa maneira:
var upload = multer({ storage: storage, fileFilter: fileFilter })
Para finalizar, é interessante permitir que o usuário tenha acesso aos arquivos da pasta public. Para fazer isso, acompanhe a aula e adicione o seguinte código ao arquivo index.js:
app.use('/static', express.static('public'))
Versão 5.3 - Todos os Direitos reservados