Fazer upload de imagens usando nodejs, express, prisma ORM
Fala devs! Alguém poderia me ajudar? Estou desenvolvendo uma aplicação de agenda de contatos e gostaria de adicionar fotos aos contatos.
Estou criando o backend da aplicação com Node.js, Express e Prisma. Já consegui salvar as imagens no backend com a ajuda do Multer, mas estou com dificuldades em salvar as imagens no banco de dados.
Assisti a alguns vídeos no YouTube, mas ainda não obtive sucesso.
Tenho uma visão que imagem deve ficar fora do banco de dados e deve estar acessível pelo sistema de arquivos. Desse modo, o que você armazena no banco de dados são os metadados daquela imagem, como nome do arquivo, tamanho, caminho e etc.
Porém, é claro que você não quer deixar esses arquivos acessíveis. Então, antes de retornar a imagem do sistema de arquivo. Você vai carregar as informações dela no banco de dados a partir dos parâmetros na URL. Além disso, é ideal utilizar um sistema de assinatura na URL para controlar o acesso delas.
Com essa estratégia você pouca espaço no banco de dados, armazena as imagens no sistema de arquivos movendo o arquivo temporário (do upload) para o novo caminho e, depois, adicionando os metadados no banco de dados. Por fim, a URL é gerada com assinatura para ser exibida para o usuário.
Nesse endpoint que lê a imagem, os parâmetros são interpretados e, caso sejam válidos, a imagem é carregada do sistema de arquivos e retornada para o usuário. Tem um longo papo por aqui, mas acredito que essa direção possa te ajudar.
Todas as imagens tem que esta na pasta public, dessa forma consegue ter acesso a qualquer tipo de arquivo audio, video, foto...
Para acessar é só colocando a url do site + o local onde ela esta + nome do arquivo, sabendo disso é só salva o nome da imagem ou qualquer arquivo no banco de dados e sempre que quiser acessar, basta montar o caminho correto, com a url + local + nome do arquivo.
O resultado vai ser semelhante a esse
http://localhost:3000/ + public/img + nome do arquivo