当我将图像上传到Firebase时,来自Database Realtime的图像网址是来自firebase存储的不同图像网址

时间:2017-06-29 15:20:27

标签: firebase firebase-realtime-database firebase-storage

这是我的代码,我不知道为什么getDownloadUrl()给出的结果与存储中的图像网址不同。

final Uri imageUri = data.getData();

        String current_user_id = mCurrentUser.getUid();

        mProgressUpload.setMessage("Uploading Image...");
        mProgressUpload.setCanceledOnTouchOutside(true);
        mProgressUpload.show();

        final StorageReference filepath = mImgStorage.child("cover_images").child(current_user_id + ".jpg");

        filepath.putFile(imageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

                @SuppressWarnings("VisibleForTests") final
                String download_url = task.getResult().getDownloadUrl().toString();

                UploadTask uploadTask = filepath.putFile(imageUri);
                uploadTask.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {

                        if(task.isSuccessful()) {

                            Map updateHashmap = new HashMap<>();
                            updateHashmap.put("cover", download_url);

                            mUserDatabase.updateChildren(updateHashmap).addOnCompleteListener(new OnCompleteListener() {
                                @Override
                                public void onComplete(@NonNull Task task) {
                                    if (task.isSuccessful()) {
                                        mProgressUpload.dismiss();
                                        Toast.makeText(ProfileSetting.this, "Update successful", Toast.LENGTH_SHORT).show();
                                    } else {
                                        Toast.makeText(ProfileSetting.this, "Update failed", Toast.LENGTH_SHORT).show();
                                        mProgressUpload.dismiss();
                                    }
                                }
                            });
                        }
                    }
                });
            }
        });

Image URL from Realtime Database

Image URL from Firebase Storage

你能解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

这是不同的,因为当您将图片上传到Firebase Storage时,您正在使用不同的网址,而当您将网址添加到Firebase Database时,您正在使用该网址。第一次使用imageUri时,第二次使用download_url时显然不相同。因此,为了解决此问题,请将要上载的文件的URL添加到存储中,并在将其添加到数据库时使用它。

希望它有所帮助。