OnSuccess未被点击,无法获取图片下载网址,点击基地

时间:2017-10-08 19:49:24

标签: android firebase google-cloud-storage

我已经尝试了所有尝试在上传后获取图片网址的所有内容,似乎没有任何效果。我一直在使用多个Stack Overflow线程但仍然没有...如果有人能够看到为什么我不能得到那将是惊人的。

提前致谢

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

它没有击中OnSuccess方法,甚至没有击中onFailed。

所有链接和孩子都是正确的。

我试图在最后添加.isSuccessful()但仍然没有。

我已经做了单独的方法,需要或多或少相同的东西,但仍然没有。

摇篮:

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'

最后,它正在完美地上传图片..只是没有给我下载图片网址。

感谢。

更新

通过询问URL并将其分配给字符串来获取URL的其他方式:

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

只是给我no auth token for request firebase

做了一些研究,这是由于我的存储空间的规则..但它是完全公开的?像这样:

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

1 个答案:

答案 0 :(得分:0)

找到了解决方案

只是为了任何人的好奇心,我想出来了..我在方法的底部添加了这一行并且它有效..它是通过解决onSuccess方法来实现的。

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

我猜这有点迫使onSuccess装配工执行