首页 > 解决方案 > 将图片上传到 Firebase 存储会自动删除之前上传的图片

问题描述

我正在尝试编写一个 ProfileActivity,它可以让您选择将带有您姓名的图像上传到其中。

这是上传功能:

private void uploadFile(){


        final StorageReference fileReference = mStorageRef.child(getFileExtension(mImageUri));
        mUploadTask = fileReference.putFile(mImageUri);

        fileReference.putFile(mImageUri)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                     @Override
               public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Toast.makeText(ProfileActivity.this, "Uploaded Successfully", Toast.LENGTH_SHORT).show();

                Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),
                        taskSnapshot.getUploadSessionUri().toString().trim(), mEditTextFileName.getText().toString().trim());

                uploadID = mEditTextFileName.getText().toString().trim();
                mDatabaseRef.child(uploadID).setValue(upload);

            }
    })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(ProfileActivity.this, "No file selected", Toast.LENGTH_SHORT).show();
                    }
                });

}

我不知道出了什么问题。我看到所有父母的所有 mImageUrl 值都更改为我刚刚上传的项目。

我的上传.class:

ublic class Upload {

private String mName;
private String mImageUrl;
private String key;

public Upload(){

    //constructor
}

public Upload(String name, String imageUrl, String id){

    if (name.trim().equals("")){
        name = "No Name";
    }

    this.mName = name;
    this.mImageUrl = imageUrl;
    this.key = id;
}

我希望每次在 mEditTextFileName 上使用不同的名称上传图像,这会将当前上传的图像存储在 Firebase 存储中,并且不会更改所有父母的 mImageUrl 值。

标签: androidfirebasefirebase-realtime-databasefirebase-storage

解决方案


推荐阅读