当我将图像上传到 Firebase 时,来自 Database Realtime 的图像 url 与 firebase 存储中的图像 url 不同
Posted
技术标签:
【中文标题】当我将图像上传到 Firebase 时,来自 Database Realtime 的图像 url 与 firebase 存储中的图像 url 不同【英文标题】:When I upload image to Firebase, image url from Database Realtime is different image url from firebase storage 【发布时间】:2017-12-03 09:25:49 【问题描述】:这是我的代码,我不知道为什么 getDownloadUrl() 给出的结果与存储中的图像 url 不同。
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
你能解决这个吗???
【问题讨论】:
“消息”:“权限被拒绝。无法执行此操作”。添加打印屏幕或更改权限。 @Alex Mamo 编辑了新的链接网址 请告诉我们您显示图片的代码。 这只是 imageView,兄弟 :)) 我使用 Picasso 并将图像从数据库加载到此。 【参考方案1】:这是不同的,因为当您将图像上传到 Firebase Storage
时,您使用的 URL 与将 URL 添加到 Firebase Database
时使用的 URL 不同。第一次使用imageUri
,第二次使用download_url
,这显然是不一样的。所以为了解决这个问题,把你上传到存储中的文件的url,当你添加到数据库时使用它。
希望对你有帮助。
【讨论】:
以上是关于当我将图像上传到 Firebase 时,来自 Database Realtime 的图像 url 与 firebase 存储中的图像 url 不同的主要内容,如果未能解决你的问题,请参考以下文章
IONIC - 如何显示来自firebase存储的图像而无需下载它[关闭]