android - Android:上传图像位图后从 Firestorage 获取下载 URL
问题描述
我的 Firestore 参考:
storageRef = FirebaseStorage.getInstance().getReference().child("/folder/photo.jpg");
我使用相机意图来获取图像:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}
在活动结果上,我得到图像并上传它:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
ByteArrayInputStream bs = new ByteArrayInputStream(data);
UploadTask uploadTask = storageRef.putStream(bs);
uploadTask.addOnSuccessListener(taskSnapshot -> {
new L().info(storageRef.getDownloadUrl()+"");
new AlertUtil().showCustomAlert(this,"done");
});
}
}
然而 storageRef.getDownloadUrl() 返回这个:
com.google.android.gms.tasks.zzu@64b8bf6
代码来自文档:[ https://firebase.google.com/docs/storage/android/upload-files][1]
我在这里想念什么?如何获取下载地址
解决方案
Uri selectedImageUri = data.getData();
StorageReference photoRef = mSRreference.child(selectedImageUri.toString());
photoRef.putFile(selectedImageUri).addOnSuccessListener(new
OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot){
// your download uri - taskSnapshot.getDownloadUrl()
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
推荐阅读
- javascript - 无法将道具传递回父组件
- precision - 从笛卡尔坐标转换到球坐标和浮点不精确
- java - 试图理解和重现正则表达式模式
- javascript - html 日历上的 Onclick 事件
- vue.js - nuxt 模板中带有 nuxt-link 的 SEO 问题
- javascript - Div 卡重叠
- html - 为什么我的 transform: translate 在两个轴上都不起作用?
- python - ValueError:ValueError:Python 中以 10 为底的 int() 的无效文字
- c++ - 放大/缩小图像 - QT c++
- java - 过滤掉文本文件