如何添加检测图像何时上传到 Firebase 存储的侦听器?

时间:2021-04-28 10:01:16

标签: android firebase-storage

在我的应用中,用户按下一个按钮,将他们的图像上传到 Firebase 存储,同时将它们带到带有结果的页面。在他们上传图像后,我需要在本地运行一些命令,然后将结果上传到 Firebase 存储。当图像已经在 Firebase 存储中时,我的结果显示正确(下面使用的代码),但如果我在用户按下按钮后添加图像,我无法让它工作,有没有办法做到这一点?

ImageView image = findViewById(R.id.rImage);

    Picasso.Builder builder = new Picasso.Builder(this);
    builder.listener(new Picasso.Listener()
    {
        @Override
        public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception)
        {
            exception.printStackTrace();
        }
    });
    builder.build().load("https://url").into(image);

1 个答案:

答案 0 :(得分:0)

我希望我答对了。我会用这样的代码上传图片:

final StorageReference ref = storageRef.child("images/your_file_name.png");
uploadTask = ref.putFile(file);
ImageView image = findViewById(R.id.rImage);

Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()) {
            throw task.getException();
        }

        // Continue with the task to get the download URL
        return ref.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            Uri downloadUri = task.getResult();
            
             Picasso.Builder builder = new Picasso.Builder(this);
    builder.listener(new Picasso.Listener()
    {
        @Override
        public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception)
        {
            exception.printStackTrace();
        }
    });
    builder.build().load(downloadUri).into(image);

        } else {
            // Handle failures
            // ...
        }
    }
});