如何在将图像上传到Firebase后获取图像URL?
问题描述:
我正在制作一个用户在Firebase存储上上传图片的应用程序。上传图片后,我想将图片的网址和其他详细信息上传到我自己的API中。我怎样才能得到用户刚刚上传的图像的Uri。 This教程教导如何做上传,但不显示如何获取图像URL。我尝试了所有的教程,但没有显示我想要的东西。如何在将图像上传到Firebase后获取图像URL?
答
根据the documentation,您可以拨打.getDownloadUrl
中的.onSuccessListener
来获取图片网址。
下面是从文档的例子:
// Get the data from an ImageView as bytes
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
UploadTask uploadTask = mountainsRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
Uri downloadUrl = taskSnapshot.getDownloadUrl();
}
});
答
您将获得的回调的onSuccess的下载网址。检查以下代码
public static void storeInFirebase(Context context, Uri uri, String type) {
StorageReference riversRef = null;
mStorageRef = FirebaseStorage.getInstance().getReference();
//to create a separate folder with all the pictures uploaded
riversRef = mStorageRef.child("pictures/" + "unique_value");
UploadTask uploadTask = riversRef.putFile(uri);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
DialogUtils.dismissProgressDialog();
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
downloadUrl = taskSnapshot.getDownloadUrl();
Log.d("downloadUrl", "" + downloadUrl);
}
});
}
谢谢仁。 Firebase存储是否适用于上传应用程序的图像,该应用程序每天会在性能和可用性方面使用该Url上传20-50个图像和1000-5000个图像? –
Firebase是该场景的可行解决方案。请记住,这样的数量可能会超过免费级别。点击此处了解更多关于定价的信息:https://firebase.google.com/pricing/ 如果我的回答有帮助,请接受它。谢谢! –
另外仁,如果我有一个谷歌高级帐户,那么随着音量的增加,我可以免费使用Firebase服务吗? –