2017-10-08 3 views
2

Ich habe absolut alles versucht, um zu versuchen und die Image URL nach dem Hochladen zu bekommen und nichts scheint zu funktionieren. Ich war auf mehreren Stack-Overflow-Threads und immer noch nichts ... Wenn jemand sehen kann, warum ich das nicht bekommen kann, wäre das erstaunlich.OnSuccess Nicht getroffen, kann nicht Bild herunterladen URL, Feuerbasis

Vielen Dank im Voraus

private void uploadFile(Bitmap bitmap) { 
    FirebaseStorage storage = FirebaseStorage.getInstance(); 
    StorageReference storageRef = storage.getReferenceFromUrl("gs://kidfinder-b082f.appspot.com"); 
    StorageReference mountainImagesRef = storageRef.child("kidfinder/" + getUserID() + ".jpg"); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 20, baos); 
    byte[] data = baos.toByteArray(); 
    UploadTask uploadTask = mountainImagesRef.putBytes(data); 
    uploadTask.isSuccessful(); 
    uploadTask.addOnFailureListener(new OnFailureListener() { 
     @Override 
     public void onFailure(@NonNull Exception exception) { 
      System.out.println("Image Upload Failed"); 
     } 
    }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
     @Override 
     public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
      System.out.println("Image Uploaded"); 
      @SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
      setImageURL(downloadUrl.toString()); 
     } 
    }); 
} 

Es ist nicht einmal die onFailed nicht die OnSuccess Verfahren zu treffen.

Alle Links und Childs sind korrekt.

Ich habe versucht, eine .isSuccessful() am Ende und immer noch nichts hinzuzufügen.

Ich habe getrennte Methoden, die mehr oder weniger das gleiche und immer noch nichts erfordern.

Gradle:

compile 'com.android.support:appcompat-v7:26.+' 
compile 'com.android.support.constraint:constraint-layout:1.0.2' 
compile 'com.google.firebase:firebase-database:10.0.1' 
compile 'com.google.firebase:firebase-storage:10.0.1' 
compile 'com.google.firebase:firebase-auth:10.0.1' 
compile 'com.github.bumptech.glide:glide:3.8.0' 
testCompile 'junit:junit:4.12' 

Schließlich ist das Hochladen des Bildes perfekt .. Nur nicht mir den Download-Bild-URL zu geben.

Danke.

UPDATE

Die anderen Möglichkeiten, die URL immer nur um darum zu bitten und es in einen String zuweisen wie folgt:

storageRef.child("CHILD STRING").getDownloadUrl().getResult(); 

gibt mir no auth token for request firebase

Haben einige der Forschung und es liegt an den Regeln meines Speicherplatzes .. aber es ist komplett öffentlich? so wie:

service firebase.storage { 
    match /b/{bucket}/o { 
    match /{allPaths=**} { 
     allow read, write; 
    } 
    } 
} 

Antwort

0

die Auflösung gefunden

Gerade für jedermann Neugier, dachte ich es aus .. Ich habe diese Zeile am Ende des Verfahrens und es funktioniert .. Sie tut dies durch die Arbeit herum zu onSuccess-Methoden.

@SuppressWarnings("VisibleForTests")Uri downloadUrl = uploadTask.getSnapshot().getDownloadUrl(); 
    System.out.println(downloadUrl.toString()); 

Ich vermute, dass es eine Art der onSuccess Rigger zwingt auszuführen