您好,我在将图片上传到Firebase存储时遇到问题

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

我正在观看YouTube,了解有关将图像存储到Firebase存储的说明。

但是,getDownloadUrl()出现错误,我不知道为什么,它是从firebase帮助程序获得的代码。

public class SellerPage extends AppCompatActivity {

    EditText Address;
    EditText price;
    EditText description;
    Button register;
    Button chooseImage;
    private FirebaseAuth auth;
    private FirebaseFirestore mFirestore;
    private StorageReference mStorageRef;
    private static final int RESULT_LOAD_IMAGE = 1;
    private static final int IMAGE_PICK_CODE = 1000;
    private static final int PERMISSION_CODE = 1001;
    ImageView View;
    public Uri imgUir;
    private StorageTask uploadTask;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_seller_page);

        auth = FirebaseAuth.getInstance();
        mFirestore= FirebaseFirestore.getInstance();
        mStorageRef = FirebaseStorage.getInstance().getReference("Images"); // Storage for the image

        Address = (EditText) findViewById(R.id.Address);
        price = (EditText) findViewById(R.id.Price);
        description = (EditText) findViewById(R.id.description);
        register = (Button) findViewById(R.id.addButton);
        chooseImage = (Button)  findViewById(R.id.image);
        View = (ImageView) findViewById(R.id.imageView);


        chooseImage.setOnClickListener(new View.OnClickListener() {
                                           @Override
                                           public void onClick(View v) {
                                               // Check runtime permission
                                               if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
                                                   if(checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
                                                           == PackageManager.PERMISSION_DENIED){
                                                       // permission not granted. then request it
                                                       String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE};
                                                       requestPermissions(permissions, PERMISSION_CODE);

                                                   }else{
                                                       //permition already granted
                                                       pickImageFromGallay();

                                                   }
                                               }else{
                                                   // OS is less than marshmello
                                                   pickImageFromGallay();
                                               }
                                           }
                                       }
        );


        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FileUploader();
                addSellerInfo();
            }
        });

    }


    private void pickImageFromGallay(){

        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        startActivityForResult(intent, IMAGE_PICK_CODE);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode,  Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK && requestCode == IMAGE_PICK_CODE && data != null){
            imgUir = data.getData();
            View.setImageURI(data.getData());
        }
    }




    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch(requestCode){
            case PERMISSION_CODE:{
                if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    pickImageFromGallay();
                }else{
                    Toast.makeText(this,"Permission denied!", Toast.LENGTH_SHORT).show();
                }
            }
        }
    }

    private String getExtension(Uri uri){
        ContentResolver cr = getContentResolver();
        MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
        return mimeTypeMap.getExtensionFromMimeType(cr.getType(uri));

    }

private void FileUploader(){
final StorageReference Ref = mStorageRef.child(System.currentTimeMillis()+ "." + getExtension(imgUir));

    Ref.putFile(imgUir)
            .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(SellerPage.this, "Uploading Image Successful", Toast.LENGTH_LONG).show();
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    // Handle unsuccessful uploads
                    // ...
                }
            });

}

    public void addSellerInfo(){
        FirebaseUser user = auth.getCurrentUser();
        String ID = user.getUid();
        String addressStr = Address.getText().toString().trim();
        String priceStr = price.getText().toString().trim();
        String descriptionStr = description.getText().toString().trim();

        CollectionReference parkspaces = mFirestore.collection("parkspaces");
        sellerData parkspace = new sellerData(ID, addressStr, priceStr, descriptionStr);
        parkspaces.add(parkspace);
    }





}
android firebase firebase-storage
1个回答
0
投票

调用getDownloadUrl(),该调用是异步的,您必须订阅成功的回调才能获得结果:

Ref.putFile(imgUir)
    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                Ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri downloadPhotoUrl) {
                        Log.e("downloaduri", downloadPhotoUrl.toString());
                        Toast.makeText(SellerPage.this, "Uploading Image Successful", Toast.LENGTH_LONG).show();
                    }
                });
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                // Handle unsuccessful uploads
                // ...
            }
        });
© www.soinside.com 2019 - 2024. All rights reserved.