0

我對Android非常陌生,並且希望製作一款允許用戶使用Firebase存儲上傳圖片的應用。登錄後,我將它們的Uid發送到SharedPreferences,以便稍後在我的imageupload活動中檢索它。我需要它,這樣當圖像發送到Firebase時,它將被置於其用戶標識的文件夾下。Android-根據特定用戶將圖片上傳到Firebase

這是我目前登錄活動檢索的UID:

FirebaseAuth auth = FirebaseAuth.getInstance(); 
     FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       FirebaseUser firebaseUser = firebaseAuth.getCurrentUser(); 
       if (firebaseUser != null) { 
        String userId = firebaseUser.getUid(); 
        sharedPref = getPreferences(MODE_PRIVATE); 
        SharedPreferences.Editor editor = sharedPref.edit(); 
        editor.putString("firebasekey", userId); 
        editor.commit(); 

這是我imageupload活動:

sharedPref = getPreferences(MODE_PRIVATE); 
    String UserId = sharedPref.getString("firebasekey", "1"); 
    StorageReference storageRef= FirebaseStorage.getInstance().getReference(); 
    StorageReference mountainsRef = storageRef.child("uploads/"+UserId+System.currentTimeMillis()); 

幫助將不勝感激。

+0

你還沒有提到你的實際問題。你面臨的問題是什麼? –

+0

您可能想看看我的博客:http://engineering.letsnurture.com/firebase-storage/ –

回答

1

在這裏你去

String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid(); 
UploadTask uploadTask = FirebaseStorage.getInstance().child("newFolder").getReference(userUid).putBytes(yourPhotoToByteArray); 
uploadTask 
      .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

       } 
      }) 
      .addOnFailureListener(new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception e) { 

       } 
      }); 

,並檢索圖像

StorageReference storageReference = FirebaseStorage.getInstance().getReference("newFolder/" + userUid); 

您可以閱讀here更多FirebaseCloudStorage。如何上傳Here,以及如何下載here

+0

我如何把圖像放在uid下面? – Mozy

+0

'FirebaseStorage.getInstance()。getReference(userUid)'是你的意思嗎?我不明白。 –

+0

當我將圖像保存到.child的Firebase中時;我如何創建該用戶的uid文件夾? – Mozy

0

嗨Mozy下面的代碼應該,當被調用的啓動意圖從圖庫中選擇一個圖像並將其上傳到firebase。希望這可以幫助。

private void updateImg() { 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, "Select picture"), CHOOSE_IMAGE); 
} 


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

    if (requestCode == CHOOSE_IMAGE && resultCode == Activity.RESULT_OK) { 
     if (data == null) { 
      // Display an error 
      return; 
     } 


     // create an inputStream from the intent result we have just created 
     InputStream inputStream = null; 
     try { 
      inputStream = yourActivity.this.getContentResolver().openInputStream(data.getData()); 
      uploadImageToFirebase(inputStream); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

private void uploadImageToFirebase(InputStream rInputStream) { 
    sharedPref = getPreferences(MODE_PRIVATE); 
    String UserId = sharedPref.getString("firebasekey", "1"); 
    StorageReference storageRef = 
    FirebaseStorage.getInstance().getReference(); 
    StorageReference mountainsRef = storageRef.child("uploads/"+UserId+System.currentTimeMillis()); 
    // running the task 
    UploadTask uploadTask = mountainsRef.putStream(rInputStream); 
    uploadTask.addOnFailureListener(new OnFailureListener() { 
     @Override 
     public void onFailure(@NonNull Exception e) { 
      // show error 
     } 
    }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
     @Override 
     public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
      // do ui stuff 
     } 
    }); 
} 
+0

我試圖上傳他們拍攝的照片,而不是已經存在的照片 – Mozy