2017-06-21 17 views
-1

私はそのユーザーがFirebaseストレージに画像をアップロードしたアプリケーションを作っています。画像をアップロードした後、画像のURLやその他の詳細を自分のAPIにアップロードします。ユーザーがアップロードした画像のUriをどうすれば取得できますか? Thisチュートリアルではアップロードを行う方法を教えていますが、画像のURLを取得する方法は示されていません。私はすべてのチュートリアルを試しましたが、どれも私が望むものを示していません。イメージフォームアンドロイドをFirebaseにアップロードした後、イメージURLを取得する方法は?

答えて

2

the documentationによれば、.onSuccessListener.getDownloadUrlと電話すると、イメージのURLを取得できます。ここで

は、ドキュメントからの例です:

// Get the data from an ImageView as bytes 
imageView.setDrawingCacheEnabled(true); 
imageView.buildDrawingCache(); 
Bitmap bitmap = imageView.getDrawingCache(); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
byte[] data = baos.toByteArray(); 

UploadTask uploadTask = mountainsRef.putBytes(data); 
uploadTask.addOnFailureListener(new OnFailureListener() { 
    @Override 
    public void onFailure(@NonNull Exception exception) { 
     // Handle unsuccessful uploads 
    } 
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
    @Override 
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
     // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL. 
     Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
    } 
}); 
+0

ありがとうございます。 Firebaseストレージは、パフォーマンスと実行可能性の観点から、毎日そのURLを使用して20-50のイメージアップロードと1000-5000のイメージフェッチを持つアプリケーションのイメージをアップロードするのに適していますか? –

+0

このシナリオでは、Firebaseが実行可能なソリューションです。そのようなボリュームは、フリー層を超える可能性があることに注意してください。価格についての詳細はこちら:https://firebase.google.com/pricing/ 私の答えが役に立つ場合は、それを受け入れてください。ありがとう! –

+0

また、私はGoogleのプレミアムアカウントを持っていれば、音量が上がるにつれてfirebaseサービスを無料で利用できますか? –

0

あなたがするonSuccessコールバック上のダウンロードURLを取得します。次のコードを確認してください

public static void storeInFirebase(Context context, Uri uri, String type) { 

StorageReference riversRef = null; 
        mStorageRef = FirebaseStorage.getInstance().getReference(); 
        //to create a separate folder with all the pictures uploaded 
     riversRef = mStorageRef.child("pictures/" + "unique_value"); 

        UploadTask uploadTask = riversRef.putFile(uri); 
        uploadTask.addOnFailureListener(new OnFailureListener() { 
      @Override 
      public void onFailure(@NonNull Exception exception) { 
       DialogUtils.dismissProgressDialog(); 
       // Handle unsuccessful uploads 
      } 
     }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
       // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL. 
       downloadUrl = taskSnapshot.getDownloadUrl(); 
       Log.d("downloadUrl", "" + downloadUrl); 

      } 
     }); 
       } 
関連する問題