Como isso é feito em projetos reais?
Enviar imagens para o frontend é um problema que geralmente não resolvemos sozinhos.
O mais comum é usar um serviço como o AWS S3.
Nesse tipo de solução o seu banco de dados persiste uma referência da imagem (pode ser um link) que está armazenado no AWS S3.
sequenceDiagram
Front-->>Server: HTTP request
Server-->>Database: Query
Database-)Server: Link da imagem
Server-)Front: Link da imagem
Front -->> S3: HTTP request
S3 -) Front: Imagem/jpeg
Esse esquema tem algumas vantagens:
- Evita a complexidade de ter que manusear imagens no seu backend.
- Economiza processamento e memória do seu servidor
- Economiza processamento e memória do seu banco de dados
- Você pode usar todos os recursos do S3
- Recursos de segurança
- Integração automática com CDN, como o AWS CloudFront.
Em resumo:
Não desenvolva seu próprio serviço de imagens em um projeto real.
Já trabalhei em um projeto de uma plataforma de ensino.
Era tudo armazenado no S3. É seguro, confiável e escalável. Não tem opção melhor.