storageRef.child("users/me/profile.png").getBytes(Long.MAX_VALUE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
Uri image=uri;
Toast.makeText(viewpgdetails.this, "image uri="+image , Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Toast.makeText(viewpgdetails.this, "failed to get image", Toast.LENGTH_SHORT).show();
// Handle any errors
}
});
// [END download_full_example]
}
答案 0 :(得分:0)
目前尚不清楚您要使用哪种URI,因此我将同时包括这两个版本。
这在Google API之外不是很有用。
这将采用以下格式:String storageUri = storage.getReference('path/to/file.png').toString();
要获取此值,您将使用以下代码:
StorageReference fileRef = storageRef.child("users/me/profile.png")
fileRef.getBytes(Long.MAX_VALUE)
.addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
Toast.makeText(viewpgdetails.this, "image uri: " + fileRef.toString(), Toast.LENGTH_SHORT).show();
// Use the bytes to display the image
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Toast.makeText(viewpgdetails.this, "failed to get image", Toast.LENGTH_SHORT).show();
// Handle any errors
}
});
在问题的代码中,您将使用:
https://firebasestorage.googleapis.com/v0/b/PROJECT_ID.appspot.com/o/path%2Fto%2Ffile.png?alt=media&token=ACCESS_TOKEN
如果您要将图像包含在网页中或将其链接到电子邮件中,将使用此URL。
这将采用以下格式:Task<Uri> getDownloadUrlTask = storage.getReference('path/to/file.png').getDownloadUrl();
由于此URL使用服务器发出的访问令牌,因此必须请求它并异步返回给客户端。这可以通过以下代码实现:
StorageReference fileRef = storageRef.child("users/me/profile.png")
fileRef.getDownloadUrl()
.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri downloadUrl) {
Toast.makeText(viewpgdetails.this, "image url: " + downloadUrl, Toast.LENGTH_SHORT).show();
// Use URL for internal web page, etc.
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Toast.makeText(viewpgdetails.this, "failed to get image url", Toast.LENGTH_SHORT).show();
// Handle any errors
}
});
在问题的代码中,您将使用:
getBytes()
注意:如果您希望HTTPS URL和文件都作为字节数组,则必须同时使用getDownloadUrl()
和{{1}}将它们作为单独的任务进行请求。