2017-06-21 130 views
-1

我正在製作一個用戶在Firebase存儲上上傳圖片的應用程序。上傳圖片後,我想將圖片的網址和其他詳細信息上傳到我自己的API中。我怎樣才能得到用戶剛剛上傳的圖像的Uri。 This教程教導如何做上傳,但不顯示如何獲取圖像URL。我嘗試了所有的教程,但沒有顯示我想要的東西。如何在將圖像上傳到Firebase後獲取圖像URL?

回答

2

根據the documentation,您可以撥打.getDownloadUrl中的.onSuccessListener來獲取圖片網址。

下面是從文檔的例子:

// 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

另外仁,如果我有一個谷歌高級帳戶,那麼隨着音量的增加,我可以免費使用Firebase服務嗎? –

0

您將獲得的回調的onSuccess的下載網址。檢查以下代碼

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); 

      } 
     }); 
       }