android - 将图像从相机或图库上传到 FirebaseStorage
问题描述
我有以下代码,以便在ImageView
从图库中选择/拍照后在内部显示图像:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == this.RESULT_CANCELED) {
return;
}
if (requestCode == GALLERY) {
if (data != null) {
Uri contentURI = data.getData();
try {
FixBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), contentURI);
ShowSelectedImage.setImageBitmap(FixBitmap);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(ProfileActivity.this, "Failed!", Toast.LENGTH_SHORT).show();
}
}
} else if (requestCode == CAMERA) {
FixBitmap = (Bitmap) data.getExtras().get("data");
ShowSelectedImage.setImageBitmap(FixBitmap);
}
}
现在,我希望将此图像保存在uid
当前用户名下的 FirebaseStorage 中。
所以我知道我应该使用以下内容:
String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
但是,如何在我的存储中进行此上传?我的最终目标是,一旦用户登录,它将自动显示存储中的个人资料图片,如果没有图片或用户拍摄了新照片,它将更新存储中的图片。
putBytes
由于需要,我的类型也有问题,BytesArray
我得到的结果是Bitmap
左右。
谢谢你。
解决方案
以下代码将帮助您使用当前用户的用户 ID 将图像存储在 images 文件夹下。您有图像位置,因此 Firebase 将从存储中选择图像。
uploadImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(contentURI != null) {
StorageReference childRef = storageRef.child("/images/"+uid+".jpg");
//uploading the image
UploadTask uploadTask = childRef.putFile(contentURI);
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(MainActivity.this, "Upload successful", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainActivity.this, "Upload Failed -> " + e, Toast.LENGTH_SHORT).show();
}
});
}
else {
Toast.makeText(MainActivity.this, "Select an image", Toast.LENGTH_SHORT).show();
}
}
});
声明变量:
StorageReference storageRef;
在 onCreateView :
storageRef = storage.getReference();
公开声明,否则会再次抛出错误
推荐阅读
- python - 如何在显示在 Django ListView 中之前从子模型中过滤掉重复的行
- android - 明确定义要使用的绑定适配器?
- apache - Apache http文件身份验证不起作用?
- ruby-on-rails - 在 Rails 中翻译单词“admin”时出现奇怪的错误
- ios - 在 SwiftUI 中,当一个 actionsheet 出现时会发生什么?
- java - 右键单击时不打开库存
- javascript - 获取 HTML 的值
- javascript - javascript/HTML:以对象作为 HTML 字符串文字中的参数绑定事件处理函数
- apache-kafka - flink 检查点和 kafka 生产者完全一次
- stripe-payments - 印度管理员账户时条纹支付不完整