Android 如何在firebaseStorage中获取到firebaseDatabase的映像路径

Android 如何在firebaseStorage中获取到firebaseDatabase的映像路径,android,firebase,android-studio,Android,Firebase,Android Studio,大家好,我正在制作一个应用程序,它使用firebaseDatabase for Users info和firebaseStorage来保存图像,我想把上传到firebaseDatabase中firebaseStorage的图像路径放在User info下,这样我就可以像个人资料图片一样显示图像,所以我用这个来上传图像和mainActivity来显示图像。我确实在寻找解决方案,并得到了一些,但它不起作用,或者我不知道如何使它起作用。我是新来安卓的 上传图像 public String getEx

大家好,我正在制作一个应用程序,它使用firebaseDatabase for Users info和firebaseStorage来保存图像,我想把上传到firebaseDatabase中firebaseStorage的图像路径放在User info下,这样我就可以像个人资料图片一样显示图像,所以我用这个来上传图像和mainActivity来显示图像。我确实在寻找解决方案,并得到了一些,但它不起作用,或者我不知道如何使它起作用。我是新来安卓的

上传图像

 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();
                                 
                                }
                            }
                    );
        }
    });