这个问题很奇怪,因为直到几天前代码都可以正常工作,尽管自从图像上传器开始运行以来我还没有碰过它。
当用户上传新的配置文件图像时,它会保存到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
答案 0 :(得分:0)
您创建了错误的存储引用。您将图像保存在profile_images / userid.jpg并在profile_images / image检索。