这是我的代码,我不知道为什么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
你能解决这个问题吗?
答案 0 :(得分:0)
这是不同的,因为当您将图片上传到Firebase Storage
时,您正在使用不同的网址,而当您将网址添加到Firebase Database
时,您正在使用该网址。第一次使用imageUri
时,第二次使用download_url
时显然不相同。因此,为了解决此问题,请将要上载的文件的URL添加到存储中,并在将其添加到数据库时使用它。
希望它有所帮助。