Android 如何在firebaseStorage中获取到firebaseDatabase的映像路径
大家好,我正在制作一个应用程序,它使用firebaseDatabase for Users info和firebaseStorage来保存图像,我想把上传到firebaseDatabase中firebaseStorage的图像路径放在User info下,这样我就可以像个人资料图片一样显示图像,所以我用这个来上传图像和mainActivity来显示图像。我确实在寻找解决方案,并得到了一些,但它不起作用,或者我不知道如何使它起作用。我是新来安卓的 上传图像Android 如何在firebaseStorage中获取到firebaseDatabase的映像路径,android,firebase,android-studio,Android,Firebase,Android Studio,大家好,我正在制作一个应用程序,它使用firebaseDatabase for Users info和firebaseStorage来保存图像,我想把上传到firebaseDatabase中firebaseStorage的图像路径放在User info下,这样我就可以像个人资料图片一样显示图像,所以我用这个来上传图像和mainActivity来显示图像。我确实在寻找解决方案,并得到了一些,但它不起作用,或者我不知道如何使它起作用。我是新来安卓的 上传图像 public String getEx
public String getExtension(Uri uri) {
ContentResolver contentResolver = getContentResolver();
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
return mimeTypeMap.getMimeTypeFromExtension(contentResolver.getType(uri));
}
private void uploadImage() {
StorageReference reference = mStorage.child(System.currentTimeMillis()+"."+getExtension(imageUri));
uploadTask= reference.putFile(imageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Get a URL to the uploaded content
// Uri downloadUrl = taskSnapshot.getDownloadUrl();
Toast.makeText(AddImageActivity.this,"Image Uploaded",Toast.LENGTH_SHORT).show();
Intent ii = new Intent(AddImageActivity.this,MainActivity.class);
startActivity(ii);
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
// ...
}
});
}
}public void uploadfile(){
if(uri!=null){
final-StorageReference filereference=StorageReference.child(System.currentTimeMillis()+“+”+getFileExtension(uri));
filereference.putFile(uri).addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(最终上载Task.TaskSnapshot TaskSnapshot){
filereference.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
Upload Upload=新上载(editText1.getText().toString(),uri.toString());
String str=databaseReference.push().getKey();
databaseReference.child(str).setValue(上传);
progressBar.setVisibility(View.INVISIBLE);
progressBar2.setVisibility(View.VISIBLE);
最终计时器=新计时器();
TimerTask TimerTask=新TimerTask(){
@凌驾
公开募捐{
计数器++;
progressBar2.setProgress(计数器);
如果(计数器==100){
toast.show();
progressBar2.setVisibility(视图不可见);
计数器=0;
timer.cancel();
}
}
};计时器时间表(计时器任务,1,15);
}
});
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
}
});
}
否则{
Toast.makeText(这是“未选择文件”,Toast.LENGTH_SHORT).show();
}
}
你好,我的朋友,请像这样复制粘贴你的函数
private void uploadImage() {
StorageReference reference = mStorage.child(System.currentTimeMillis()+"."+getExtension(imageUri));
uploadTask= reference.putFile(imageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
reference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String uploadedImageUrl = uri.toString();
// Now you have your image in (uploadedImageUrl) variable so write your code to upload in firebaseDatabase and enjoy
}
});
Toast.makeText(AddImageActivity.this,"Image Uploaded",Toast.LENGTH_SHORT).show();
Intent ii = new Intent(AddImageActivity.this,MainActivity.class);
startActivity(ii);
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
// ...
}
});
private void uploadImage(){
StorageReference=mStorage.child(System.currentTimeMillis()+“+”+getExtension(imageUri));
uploadTask=reference.putFile(imageUri)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
reference.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
字符串uploadedImageUrl=uri.toString();
//现在您已经在(uploadedImageUrl)变量中设置了图像,所以请编写代码,以便在firebaseDatabase中上载,并享受其中的乐趣
}
});
Toast.makeText(AddImageActivity.this,“上传图像”,Toast.LENGTH_SHORT.show();
意图ii=新意图(AddImageActivity.this,MainActivity.class);
星触觉(ii);
完成();
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理不成功的上传
// ...
}
});
}对我有用的
final StorageReference reference = mStorageReference.child(System.currentTimeMillis() + "." + getExtension(imageUri));
reference.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
taskSnapshot.getStorage().getDownloadUrl()
.addOnSuccessListener(
new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String imageUrl = uri.toString();
}
}
);
}
});
final-StorageReference=mStorageReference.child(System.currentTimeMillis()+“+getExtension(imageUri));
reference.putFile(imageUri).addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
taskSnapshot.getStorage().getDownloadUrl()
.addOnSuccessListener(
新OnSuccessListener(){
@凌驾
成功时的公共无效(Uri){
字符串imageUrl=uri.toString();
}
}
);
}
});
我的朋友,他只需要关于如何获得图像的答案,我的建议是,不要给他写额外的一行,因为他现在可能对看到你的代码感到困惑,但因为你已经写了一个完美的代码,但基于他的问题,他不需要进度条或其他任何东西,所以下次你的回答尽可能简单,谢谢你的评论,我确实复制并粘贴了它,但getDownloadUrl()上出现了一个错误,表示无法在“StorageTask”中解析方法“getDownloadUrl()”。有什么想法吗?是的,我已更改为使用引用更新任务。请再次复制粘贴它肯定会起作用
private void uploadImage() {
StorageReference reference = mStorage.child(System.currentTimeMillis()+"."+getExtension(imageUri));
uploadTask= reference.putFile(imageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
reference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String uploadedImageUrl = uri.toString();
// Now you have your image in (uploadedImageUrl) variable so write your code to upload in firebaseDatabase and enjoy
}
});
Toast.makeText(AddImageActivity.this,"Image Uploaded",Toast.LENGTH_SHORT).show();
Intent ii = new Intent(AddImageActivity.this,MainActivity.class);
startActivity(ii);
finish();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
// ...
}
});
final StorageReference reference = mStorageReference.child(System.currentTimeMillis() + "." + getExtension(imageUri));
reference.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
taskSnapshot.getStorage().getDownloadUrl()
.addOnSuccessListener(
new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String imageUrl = uri.toString();
}
}
);
}
});