我正在尝试为用户个人资料上传和下载图片,当我保存照片时,我使用userId保存它,这样我每次更改照片时都可以替换它,现在我需要的是获取该照片毕加索,事情是,我不知道如何获得照片,它可以有不同的格式和其他东西,如jpeg,png,我只想在userID匹配时获取图像,我试过这个:
storageRef = storage.getReferenceFromUrl("gs://friendlymanager-3b7a2.appspot.com");
Picasso.with(UserSettings.this).load(storageRef + "/Photos/" + userId).into(userImage);
我的userImage是我的imageView,我没有任何错误只是一个空白图片,我已经有一张特定用户的照片。
任何帮助?
答案 0 :(得分:3)
你必须得到这样的下载链接,
StorageReference storageRef = storage.getReference().child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child(FirebaseAuth.getInstance().getCurrentUser().getUid());//reach out to your photo file hierarchically as stored on firebase
storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.e("URI", uri.toString());
Glide.with(SaveUserActivity.this).load(uri).into(profile_image);
url = uri.toString();
}
});
答案 1 :(得分:2)
使用Picasso OR滑翔等从Firebase存储中提取图像时,您应该使用getDownloadUrl()
。
答案 2 :(得分:2)
考虑使用Firebase-UI Android library,这使您能够直接从存储引用加载图像。在你的情况下,它看起来像这样
我不确定Picasso是否受支持,但你可以使用Glide 例如:
mStorageRef = FirebaseStorage.getInstance().getReference();
Glide.with(this /* context */)
.using(new FirebaseImageLoader())
.load(mStorageRef + "/Photos/" + userId)
.error(R.drawable.default)
.into(imageView);