2017-04-13 19 views
0

Firebase Storageにファイルをアップロードした後に取得するFirebaseストレージURLを保存しようとしていますが、わからない理由でStorage onSuccessリスナ内のFirebaseデータベース上の場所に書き込みます。なぜどんなアイデア?これがアップロードされたファイルのURLの場所を保存する適切な方法でない場合、それは何ですか?Firebase Storage onSuccessリスナー内のFirebaseデータベースに書き込めません

私はこれの例を見つけることはできません。これはアンドロイド向けです。 あなたが達成しようとしているのは何

+0

あなたには、いくつかのコードを投稿することができますに役立ちます願っていますか? – wnieves19

+1

ファイルのダウンロードURL(およびその他のメタデータ)は常にデータベースに保存します。だからあなたの使い方に固有のものでなければなりません。 [問題を再現する最小限のコード](http://stackoverflow.com/help/mcve)(リンクを読んで、それは非常に有用です)を見ることなく、もっと言い表すのは難しいでしょう。 –

+1

素早い返答をありがとう。私が家に帰ると、今晩、私はいくつかのコードを提供することになるでしょう。 – Sethsmagic

答えて

0

が完全になんとかですありがとう、ここでの例だ

StorageReference fileRef = ....; 
    Uri fileUri = ....; 
    UploadTask uploadTask = fileRef.putFile(fileUri); 

    uploadTask.addOnFailureListener(new OnFailureListener() { 
     @Override 
     public void onFailure(@NonNull Exception exception) { 
      // Handle unsuccessful uploads 
      Log.d("TAG", "onFailure: " + exception); 

     } 
    }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
     @Override 
     public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
     // This is the URL you are looking for, here you should insert it into your db instance...Something like this 
     Uri downloadUrl = taskSnapshot.getDownloadUrl(); 

     DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference(); 
     dbRef.child("uploadUrls").child("url1").setValue(downloadUrl.toString()); 
     } 
    }); 

私は、これは

+1

こんにちはWnieves19、これは役に立ちました。私がやろうとしていたことが可能であるというあなたのコメントとFrank van Puffelenの確認を見た後、私はもう少し掘り下げて、問題を発見した(少なくとも私がやったと思う)。私はUriを文字列の代わりにuriとして格納しようとしていました。オブジェクトをデータベースに格納しようとすると、スタックオーバーフローが発生します。私は文字列に変更しようとしたが、うまくいくようだ。 – Sethsmagic

+1

しかし、少し混乱しているようですが、Firebaseはユーザ写真のURL(私はuser.getPhotoUrl()を使って検索できます)を格納できるようにして、FirebaseストレージからのURIではなくUriのものとして保存できます。私の唯一の推測は、ファイヤー倉庫からのウリの方がはるかに長いということなので、問題です。もしあなたの誰かがその問題についてより多くの洞察を輝かせることができれば幸いですが、私は非常に助けに感謝します、ありがとう! – Sethsmagic

+0

getPhotoUrl()メソッドがUriを返すという問題があります。リアルタイムデータベースに保存できるデータの種類については、データの読み書きに関するドキュメントを参照してください。 https://firebase.google.com/docs/database/android/read-and-write 希望するものは – wnieves19

0
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference(); 

uploadTask.addOnFailureListener(new OnFailureListener() { 
      @Override 
      public void onFailure(@NonNull Exception exception) { 
       // Handle unsuccessful uploads 
       Log.d("TAG", "onFailure: " + exception); 

      } 
     }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
      // This is the URL you are looking for, here you should insert it into your db instance...Something like this 
      Uri downloadUrl = taskSnapshot.getDownloadUrl(); 

      addData(downloadUrl.toString()); 

      } 
     }); 


public void addData(String downloadUrl) 
{ 

dbRef.child("uploadUrls").child("url1").setValue(downloadUrl); 

} 
関連する問題