尝试将用户上传的图片网址保存到我的Firebase数据库中时出现小问题

时间:2018-08-15 15:14:57

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

这个问题很奇怪,因为直到几天前代码都可以正常工作,尽管自从图像上传器开始运行以来我还没有碰过它。

当用户上传新的配置文件图像时,它会保存到Firebase存储中,但是,当发生这种情况时,图像下载URL也将自动保存到User数据库中。不幸的是,这部分已停止工作。图像文件本身已成功上传,当我将Firebase存储中的完整图像URL手动粘贴到用户数据库中时,新的配置文件图像会完美显示。我已经查看了代码,但仍然无法找出问题所在。

代码:

    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);

        if (resultCode == RESULT_OK) {

            //IMAGE UPLOAD PROGRESS DIALOG
            //mProgressDialog...

            Uri resultUri = result.getUri();
            String current_user_id = mCurrentUser.getUid();

            //SAVE NEW PROFILE IMAGE TO DATABASE AND RENAME AS USERSID.JPG
            StorageReference filepath = mImageStorage.child("profile_images/").child(current_user_id + ".jpg");

            filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                    if (task.isSuccessful()) {
                        mImageStorage.child("profile_images/").child("image").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {

                                String download_url = uri.toString();

                                mUserDatabase.child("image").setValue(download_url).addOnCompleteListener(new OnCompleteListener<Void>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                        if (task.isSuccessful()) {
                                            mProgressDialog.dismiss();
                                        }
                                    }
                                });
                            }
                        });

请注意,当上传新图像时,我会在logcat中收到以下消息:

“ E / StorageException:发生StorageException。     对象在该位置不存在。“

该消息似乎表明该文件不存在,即使每次都保存到Firebase存储中?

与往常一样,非常感谢您的帮助。非常感谢。

屏幕截图: Image is successfully uploaded to Firebase Storage | Detailed view of uploaded image information | Image dl url after I've pasted it manually into the User 'image' row in the database. It displays fine in the app

Android Studio v3.1.3

1 个答案:

答案 0 :(得分:0)

您创建了错误的存储引用。您将图像保存在profile_images / userid.jpg并在profile_images / image检索。