图片无法在Firebase存储中上传

时间:2017-07-05 08:00:04

标签: android firebase firebase-realtime-database firebase-storage

您可以帮助我,我正在尝试在FirebaseStorage中上传图片。 但它失败了。

我的按钮单击方法

public void uploadImage(View view){
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType("image/*");
    startActivityForResult(intent,GALLERY_INTENT);
}

这里是onActivityResult()

   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    progressDialog.setMessage("Uploading");
    progressDialog.show();
    if(requestCode ==GALLERY_INTENT){
        final Uri uri = data.getData();
        StorageReference filepath = storageReference.child("Photos").child(uri.getLastPathSegment());
        filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                Toast.makeText(getApplicationContext(),"Uploaded Successfully",Toast.LENGTH_LONG).show();
               // profileImage.setImageURI(uri);
                progressDialog.dismiss();
            }
        });
    }
}

此代码有什么问题?

1 个答案:

答案 0 :(得分:0)

试试这个

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.e("resultCode: ", resultCode + " RequestCode: " + requestCode);
    if (resultCode == getActivity().RESULT_OK) {
        sendImageToFireBase(data.getData());
    }
}

private void saveImageToFireBase(Uri pathUri) {
    StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("Photos");
    StorageReference photoRef = storageReference.child(pathUri.getLastPathSegment());
    // Upload file to Firebase Storage
    photoRef.putFile(pathUri).addOnSuccessListener(getActivity(), new OnSuccessListener<UploadTask.TaskSnapshot>() {
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            // When the image has successfully uploaded, we get its download URL
            Uri downloadUrl = taskSnapshot.getDownloadUrl();
            // Set the download URL to the message box, so that the user can send it to the database
        }
    });
}