0

Ich bin ziemlich neu in Android und möchte eine App erstellen, mit der Benutzer Bilder mit Firebase-Speicher hochladen können. Nachdem sie sich angemeldet haben, habe ich sie so eingerichtet, dass ihre UID an SharedPreferences gesendet wird, damit ich sie später in meiner imageupload-Aktivität abrufen kann. Ich brauche es, damit das Bild, wenn es an Firebase gesendet wird, unter dem Ordner ihrer Benutzer-ID abgelegt wird.Android- Bild auf Firebase unter einem bestimmten Benutzer hochladen

Dies ist meine aktuelle Login-Aktivität, die die Uid ruft:

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

Und das ist meine Upload Aktivität:

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

Hilfe würde sehr geschätzt werden.

+0

Sie haben Ihr tatsächliches Problem noch nicht erwähnt. Was ist das Problem, vor dem Sie stehen? –

+0

Vielleicht möchten Sie einen Blick auf mein Blog werfen: http://engineering.letsnurture.com/firebase-storage/ –

Antwort

1

Hier gehen Sie

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

       } 
      }); 

Und Bild

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

Sie here mehr über FirebaseCloudStorage lesen können abgerufen werden. Here wie Sie hochladen, und here, wie Sie sie herunterladen.

+0

Wie kann ich lege das Bild unter die UID? – Mozy

+0

'FirebaseStorage.getInstance(). GetReference (userUid)' ist das was du meinst? Ich verstehe nicht. –

+0

Wenn ich das Bild in Firebase in .child speichere; Wie kann ich einen Ordner der Benutzer-ID erstellen? – Mozy

0

Hallo Mozy unter Code sollte, wenn aufgerufen Launch Intent ein Bild aus der Galerie auswählen und es auf Firebase hochladen. Hoffe das hilft.

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

Ich versuche, ein Bild hochladen sie nehmen, nicht eine, die bereits in ihrer Galerie existiert – Mozy

Verwandte Themen