首页 > 解决方案 > 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]

我在这里想念什么?如何获取下载地址

标签: androidgoogle-cloud-datastore

解决方案


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

推荐阅读