Firebase存储-未创建链接

问题描述 投票:0回答:1

我正在尝试将图像和文档上传到Firebase存储器,并将从两者创建的链接上传到Real-Time DB,所有操作都在单击按钮时发生。但是在firebase数据库中,链接没有上传,而我和他们一起上传的其他文本在那里。

存储上传代码:

updata.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //before uploading both the doc and img..
            progressDialog.setTitle("Uploading Images");
            progressDialog.show();

            final UploadData uploadData=new UploadData();

            if(ImgPathUri!=null){
                StorageReference str=storageReference.child(StoragePath + System.currentTimeMillis() + "." + getExtension(ImgPathUri));

                str.putFile(ImgPathUri)
                        .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 ImgLink=uri.toString();
                                                linkimg=ImgLink;
                                                uploadData.setImgURL(linkimg);

                                            }
                                        });

                            }
                        })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Toast.makeText(addEventActivity.this, "fucked ra", Toast.LENGTH_SHORT).show();
                                finished=false;
                            }
                        })
                        .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {

                            }
                        });
            }

            if(DocPathUri!=null){
                StorageReference storageReference1=storageReference.child(StoragePath + System.currentTimeMillis() + "." + getExtension(DocPathUri));

                storageReference1.putFile(DocPathUri)
                        .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 DocLink=uri.toString();
                                                linkdoc=DocLink;
                                                uploadData.setDocURL(linkdoc);
                                            }
                                        })
                                .addOnFailureListener(new OnFailureListener() {
                                    @Override
                                    public void onFailure(@NonNull Exception e) {
                                        Log.e("TAG_FOR_FAILURE LOG", "On Failure: The exception", e);
                                    }
                                });

                            }
                        })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                finished=false;
                                Toast.makeText(addEventActivity.this, "doc fucked", Toast.LENGTH_SHORT).show();
                            }
                        });
            }

            progressDialog.dismiss();


            String info=infoText.getText().toString();
            String event=eventName.getText().toString();

            uploadData.setName(event);
            uploadData.setInfo(info);

            //uploading the event name,info and other file links to the RTDB under the event name
            databaseReference.child(event).setValue(uploadData);

        }
    });

}

其中updata是按钮,UploadData是用于保存所有这些值的类...

单击按钮后,图像存储在存储器中,而数据库则什么也没有,

data {
   name:"given name"
   info:"given info"
}

虽然必须包含ImgLinkDocLink。它在哪里失踪?

android firebase firebase-realtime-database firebase-storage
1个回答
0
投票

尝试此代码

全局声明此对象

Uri uri;

[当用户从图库中获取图像时设置uri

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {

        uri = data.getData();
        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            jimg.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这里sUrl将具有downloadURL

private void uploadImage() {
    try {
        final StorageReference ref = storageReference.child(  UUID.randomUUID().toString() );

        //uploads the image
        ref.putFile( uri ).addOnSuccessListener( new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                ref.getDownloadUrl().addOnSuccessListener( new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        final Uri downloadUrl = uri;
                        sUrl = downloadUrl.toString();

                    }
                } ).addOnFailureListener( new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {

                    }
                } );


            }
        } );
    }catch (Exception e){}
}
© www.soinside.com 2019 - 2024. All rights reserved.