Firebase Storage Como armazenar e recuperar imagens [fechado]

269

Como armazenar e visualizar imagens no firebase?

dogger
fonte
1
Isso é legal, se eu armazenar imagens usando firebase, eu posso usar logins Firebase para a segurança
mrwaim
6
Ontem, o Firebase lançou um novo recurso, chamado Firebase Storage (firebase.google.com/docs/storage), que permite carregar e baixar arquivos arbitrários (imagens, vídeo, áudio etc.). É apoiado pelo Google Cloud Storage (cloud.google.com/storage) para escala de petabytes e preço competitivo. Você deve definitivamente verificar isso :)
Mike McDonald
16
Os usuários acham útil, por que fechou?
Amr Lotfy
7
@TinyGiant Isso não está pedindo uma recomendação, então por que ela seria fechada como tal? Ele está perguntando sobre um recurso de um serviço de software - completamente sobre o assunto.
2
eu odeio comentários fechados prematuros. perguntas diretas não devem ser fechadas pelo amor de Deus!
precisa

Respostas:

277

Atualização (20160519) : O Firebase acaba de lançar um novo recurso chamado Firebase Storage . Isso permite carregar imagens e outros dados não JSON em um serviço de armazenamento dedicado. É altamente recomendável que você use isso para armazenar imagens, em vez de armazená-las como dados codificados em base64 no banco de dados JSON.

Você certamente pode! Dependendo do tamanho das suas imagens, você tem algumas opções:

1. Para imagens menores (abaixo de 10mb)

Temos um exemplo de projeto que faz isso aqui: https://github.com/firebase/firepano

A abordagem geral é carregar o arquivo localmente (usando o FileReader) para que você possa armazená-lo no Firebase da mesma forma que faria com qualquer outro dado. Como as imagens são arquivos binários, você deseja obter o conteúdo codificado em base64 para poder armazená-lo como uma string. Ou ainda mais conveniente, você pode armazená-lo como um dado: url, que está pronto para aparecer como o src de uma tag img (é o que o exemplo faz)!

2. Para imagens maiores

O Firebase tem um limite de 10mb (de dados de string codificados em utf8). Se sua imagem for maior, será necessário dividi-la em pedaços de 10 MB. Você está certo, porém, de que o Firebase é mais otimizado para cadeias pequenas que mudam frequentemente, em vez de cadeias de vários megabytes. Se você tiver muitos dados estáticos grandes, eu recomendaria definitivamente o S3 ou uma CDN.

Michael Lehenbauer
fonte
2
Fantástico. Você já teve alguma limitação de tamanho de arquivo? Eu não acho que Firebase foi feito com multi-megabytes cordas em mente ...
MasterScrat
8
O Firebase tem um limite de 10mb (de dados de string codificados em utf8). Se sua imagem for maior, será necessário dividi-la em pedaços de 10 MB. Você está certo, porém, de que o Firebase é mais otimizado para cadeias pequenas que mudam frequentemente, em vez de cadeias de vários megabytes. Se você tiver muitos dados estáticos grandes, eu recomendaria definitivamente o S3 ou uma CDN.
Michael Lehenbauer
14
O Firebase realmente precisa adicionar um armazenamento maior ao sistema de hospedagem ou uma instância s3 com APIs incorporadas em suas bibliotecas.
precisa saber é o seguinte
9
@The_Brink Obrigado pelo feedback. Definitivamente, isso está no nosso radar!
Michael Lehenbauer
4
@ezain Isso está correto. Provavelmente, eu não recomendaria essa abordagem para grandes sites de produção (você realmente deseja um serviço de veiculação de imagens apoiado por CDN), mas é fácil e "bom o suficiente" para muito uso.
Michael Lehenbauer
25

Sim, você pode armazenar e visualizar imagens no Firebase. Você pode usar um filepicker para obter o arquivo de imagem. Então você pode hospedar a imagem como quiser, eu prefiro o Amazon s3. Depois que a imagem estiver hospedada, você poderá exibi-la usando o URL gerado para a imagem.

Espero que isto ajude.

user15163
fonte
3
Confira os documentos atualizados do firbase para isso: firebase.google.com/docs/storage/#key_functions
Lukas Liesis
Se você deseja hospedar a imagem na amazon, por que não salvá-la no Firebase Storage ?
Ojonugwa Jude Ochalifu
19

Acabei armazenando as imagens no formato base64. Eu os traduzo de seu valor base64 quando retornados da firebase.

Grendel2501
fonte
1
O único problema com esta abordagem é que, quando as imagens são grandes, movendo-os em todas as actividades faz com que o aplicativo lento e em alguns casos de acidente
Ojonugwa Jude Ochalifu
10

Você também pode usar um serviço chamado Filepickerque armazenará sua imagem em seus servidores e o Filepicker, que agora é chamado Filestack, fornecerá um URL para a imagem. Você pode armazenar o URL no Firebase.

Felice
fonte
Eu vi esse serviço pelo seu comentário. Tentei, mas não estou muito feliz com isso.
precisa saber é
3

Existem algumas maneiras de fazer o primeiro que fiz no Grendal2501. Fiz isso de forma semelhante ao user15163, você pode armazenar o URL da imagem na base do firebase e hospedar a imagem no host da firebase ou também no Amazon S3;

Jakob Hartman
fonte
Erro 403 ao tentar inserir e renderizar imagens - com problemas de permissão nas imagens após o upload - qualquer informação sobre como você configura o upload. Tentei usar o acl: 'public-read' - mas o upload falhou - com um 403. Qualquer documento de política de informações e política de bucket que pudesse ajudar - seria ótimo. AWS - a documentação é difícil e não há informações de depuração com erro além do acesso negado.
Jamie
2
Faça isso como outra questão #
Jakob Hartman
boa idéia :) feito - embora a pilha possa ser diferente - se houver algum estímulo que você possa me dar - seria bem-vindo. A depuração de erros do AWS S3 é super frustrante - pelo menos até agora. stackoverflow.com/questions/31998827/…
jamie
2

O uso da string Base64 no JSON será muito pesado. O analisador precisa fazer muito trabalho pesado. Atualmente, o Fresco suporta apenas suporte básico Base64. Melhor você colocar algo no Amazon Cloud ou Firebase Cloud. E obtenha uma imagem como um URL. Para que você possa usar Picasso ou Glide para armazenamento em cache.

Asthme
fonte