2017-12-17 16 views
0

私は写真を撮るためのAndroidアプリを開発中です。まず、ユーザーはプロフィール写真を撮ります。このイメージのURLはFirebase Realtimeデータベースに保存されます。Firebase Storage - 画像URLを管理する

Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg")); 
StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment()); 
uploadTask = riversRef.putFile(file); 


uploadTask.addOnFailureListener(new OnFailureListener() { 
    @Override 
    public void onFailure(@NonNull Exception exception) { 

    } 
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
    @Override 
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

     Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
    } 
}); 

このURLは、私は、ユーザーのプロフィール画像をロードする必要があり、データベース内の複数の場所に保存されます下にdownloadUrl取得するためのサンプルコード - アプリの他の人に自分の投稿のそれぞれのエントリは、彼のメッセージは、など、私は2つのオプション

  1. 更新一人ひとりデータベースエントリ次ている今、彼は後日プロフィール画像を変更した場合

    - 非常に面倒で、ブルートフォースや資源集約

  2. オリジナルのプロフィール画像を上書きするのは簡単ですが、どうやって解決するかわかりません。その理由は、同じファイル名であっても、Firebase Storageはダウンロードごとに新しいURLを生成し、この練習の目的を破るということです。

イメージをFirebaseストレージにアップロードし、静的なURLを生成するより良い方法がありますか?

この依存関係の原因は、ピカソとグライドを使用して画像を読み込んでいるため、URLが静的である必要があるということです。

私が最小限の労力でプロファイル画像を管理するという私の問題を解決する限り、すぐに使えるアイデアも歓迎します。

答えて

0

私は最終的にURLをすべて削除することにしました。プレフィックスgs://のGoogleストレージUriは静的です。アプリ内からのみアクセスできます。だから私は今、画像が更新されるたびに、私は、元のファイルを上書きし、それが自動的にデータベース内のすべてのエントリ間のすべてのリンクのための画像を更新しthis tutorial

から指導を使用してgs:// URIのカスタムRequestHandlerを書くことにしました。

関連する問題