Android 无法解析符号-位图图像压缩并上载到Firebase
我正在尝试选择一个图像,压缩它,然后将其上载到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
无法解析符号“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那里一切都好,我能帮你了解其他信息吗?非常感谢。它工作得很好。干杯