Executando verificação de segurança...
1

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.

Carregando publicação patrocinada...
2

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.

0
1

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

1

Gostaria de acrescentar a sua solução que, como a proposta dele é ser uma agenda de contatos tendo um objetivo privado, acesso direto ao nome do arquivo pode possibilitar exploits e vazamento de imagens.

É sempre bom levar em consideração o objetivo. Nesse caso seria interessante utilizar uma assinatura de URL que previne a descoberta de URL e tem uma triagem inicial antes de fato carregar a imagem do sistema de arquivos.