Android 无法解析符号-位图图像压缩并上载到Firebase

Android 无法解析符号-位图图像压缩并上载到Firebase,android,firebase,firebase-storage,Android,Firebase,Firebase Storage,我正在尝试选择一个图像,压缩它,然后将其上载到firebase存储。我正在尝试以下代码,但得到一个错误,无法解析符号“data2” 这是我的活动: private void openFileChooserOne() { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult

我正在尝试选择一个图像,压缩它,然后将其上载到firebase存储。我正在尝试以下代码,但得到一个错误,
无法解析符号“data2”

这是我的活动:

private void openFileChooserOne() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, PICK_IMAGE_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK &&
        data != null && data.getData() != null) {
        mImageUri = data.getData();
        Picasso.get().load(mImageUri).into(mImageView);
    }
}

private void uploadFile() {
    FirebaseUser user = mAuth.getCurrentUser();
    String userID = user.getUid();
    if (mImageUri != null && mImageMedicalUri != null) {
        StorageReference fileReference = mStorageRef.child(userID).child("image.jpg");
        try {
            Bitmap bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), mImageUri);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bmp.compress(Bitmap.CompressFormat.JPEG, 25, baos);
            byte[] data2 = baos.toByteArray();
        } catch (IOException ioEx) {
            ioEx.printStackTrace()
        }
        mUploadTask = fileReference.putBytes(data2) //Getting error here
            .addOnSuccessListener(new OnSuccessListener < UploadTask.TaskSnapshot > () {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        //
                    });
            }
    })
}
private void openfilechooservone(){
意图=新意图();
intent.setType(“image/*”);
intent.setAction(intent.ACTION\u GET\u CONTENT);
startActivityForResult(意图、拾取图像请求);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
如果(requestCode==PICK\u IMAGE\u REQUEST&&resultCode==RESULT\u OK&&
数据!=null&&data.getData()!=null){
mimageri=data.getData();
Picasso.get().load(mimageri).into(mImageView);
}
}
私有void上传文件(){
FirebaseUser=mAuth.getCurrentUser();
字符串userID=user.getUid();
if(mimageri!=null&&mimageredicaluri!=null){
StorageReference fileReference=mStorageRef.child(userID.child)(“image.jpg”);
试一试{
位图bmp=MediaStore.Images.Media.getBitmap(getContentResolver(),mimageri);
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG,25,baos);
字节[]数据2=baos.toByteArray();
}捕获(IOException ioEx){
ioEx.printStackTrace()
}
mUploadTask=fileReference.putBytes(data2)//此处获取错误
.addOnSuccessListener(新建OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
//
});
}
})
}

我是Java新手,正在努力理解这个问题。非常感谢您的帮助,让我知道我在这里做错了什么。

当您使用以下代码行时:

mUploadTask = fileReference.putBytes(data2)

您的
data2
变量不在声明它的范围内。要解决此问题,您应该将此行移到try-catch块内,或者将
data2
变量作为全局变量。

data2位于try块中。这是那个街区的地方。移动上传代码内试块非常感谢。它现在工作得很好@RaghunandanIs那里一切都好,我能帮你了解其他信息吗?非常感谢。它工作得很好。干杯