2017-06-09 77 views
1

我將用戶個人資料圖片存儲在Firebase存儲中。我想獲取這些個人資料照片的可下載網址,並將每個用戶個人資料圖片網址存儲在他/她的用戶ID下的Firebase數據庫中。 這是我的代碼,用於將圖片存儲在firebase存儲中。但我不知道如何獲取URL並將其存儲在相應用戶ID下的數據庫中。我還附加了我的Firebase數據庫的快照。 Firebase database image如何從Firebase存儲獲取圖像可下載url並存儲在firebase數據庫中?

protected void onActivityResult(int requestCode, int resultCode, Intent 
data) { 
    super.onActivityResult(requestCode, resultCode, data); 


    if(requestCode == GALLERY_INTENT && resultCode == RESULT_OK) 
    { 
     progressDialog.setMessage("Uploading..."); 
     progressDialog.show(); 
     FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
     String userID = user.getUid(); 
     Uri uri = data.getData(); 
     ivProfilePicture.setImageURI(uri); 

     StorageReference filepath = 
     storageReference.child("Photos").child(userID); 

     filepath.putFile(uri).addOnSuccessListener(new 
     OnSuccessListener<UploadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
       Toast.makeText(EditProfile.this,"Upload 
      Done",Toast.LENGTH_SHORT).show(); 

       progressDialog.dismiss(); 

      } 
     }); 

回答

1

1>創建地圖的一些信息...

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

    String email = user.getEmail(); 
    String name = user.getDisplayName(); 
    String userName = "USER_NAME"; // set userName here... 
    String id = user.getUid(); 

    Map<String,String> imageInfo = new HashMap<>(); 
    imageInfo.put("email", email); 
    imageInfo.put("id", id); 
    imageInfo.put("name", name); 
    imageInfo.put("userName", userName); 

2>上傳文件後,將信息添加到數據庫中..

// inside OnSuccessListener 

    DatabaseReference db = FirebaseDatabase.getInstance().getReference("Users"); 
    db.push().setValue(imageInfo); 

    // this will add all information to your database... 

3>下載圖像與文件名...

使用數據庫查詢從數據庫獲取文件名... 並使用這些代碼下載圖像並設置爲任何圖像...

try { 
     final File tmpFile = File.createTempFile("img", "png"); 
     StorageReference reference = FirebaseStorage.getInstance().getReference("Photos"); 

     // "id" is name of the image file.... 

     reference.child(id).getFile(tmpFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() { 
      @Override 
      public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) { 

       Bitmap image = BitmapFactory.decodeFile(tmpFile.getAbsolutePath()); 

       userImageView.setImageBitmap(image); 

      } 
     }); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

不完全是我要求的,但它以其他方式爲我工作,並且問題已被解決。非常感謝Yash。 –

+0

很高興它爲你工作 – Yash

相關問題