java - 无法在 FirebaseStorage 上上传图片
问题描述
我无法在 Firebase 存储上上传个人资料图片。我正在从吐司中打印错误。为什么会这样?我无法解决问题,我多次查看我的代码。可能是什么问题,我该如何调整我的代码以使其正常工作?提前感谢大家。
public class ProfiloUtenteActivity extends AppCompatActivity {
private ImageView mImageBtn;
private ImageView mSettingsBtn, mPersonalReviewsBtn, mShowFriendsBtn;
private CircleImageView mProfileImage;
private TextView mMailAcc, mUsernameAcc;
private static final int GALLERY_PICK = 1;
private DatabaseReference mUserDatabase;
private FirebaseUser mCurrentUser;
private ProgressDialog mProgress;
private StorageReference mImageStorage;
private String myUri = "";
private Uri imageUri;
FirebaseAuth auth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profilo_utente);
mShowFriendsBtn = findViewById(R.id.imageShowFriends);
mPersonalReviewsBtn = findViewById(R.id.imagePersonalReviews);
mSettingsBtn = (ImageView) findViewById(R.id.imageViewSettings);
mImageBtn = (ImageView) findViewById(R.id.change_image_btn);
mProfileImage = (CircleImageView) findViewById(R.id.profile_image);
mMailAcc = (TextView) findViewById(R.id.textViewMailAcc);
mUsernameAcc = (TextView) findViewById(R.id.textView7);
auth = FirebaseAuth.getInstance();
mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
String current_uid = mCurrentUser.getUid();
mUserDatabase = FirebaseDatabase.getInstance().getReference().child("utenti").child(current_uid);
mImageStorage = FirebaseStorage.getInstance().getReference();
mImageBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent galleryIntent = new Intent();
galleryIntent.setType("image/*");
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(galleryIntent, "Seleziona una foto"), GALLERY_PICK);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == GALLERY_PICK && resultCode == RESULT_OK) {
imageUri = data.getData();
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1, 1)
.start(this);
}
if(requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
Uri resultUri = result.getUri();
StorageReference filepath = mImageStorage.child("profile_images").child("1wq");
filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if(task.isSuccessful()) {
Toast.makeText(ProfiloUtenteActivity.this, "Funziona", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ProfiloUtenteActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
}
});
}
}
}
解决方案
当一个Task
失败时,它包含一个异常,其中包含有关失败的更多信息。日志记录可让您找出问题的原因:
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if(task.isSuccessful()) {
Toast.makeText(ProfiloUtenteActivity.this, "Funziona", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ProfiloUtenteActivity.this, "Error", Toast.LENGTH_SHORT).show();
Log.e("Upload", "Upload failed", task.getException());
}
}
收到错误消息后,我建议您搜索它,可能有人以前处理过它。
推荐阅读
- sql - 如何在单个 oracle SQL 查询和总金额中针对 person_number 和更多列获取总金额
- php - 解析 PHP 当前用户更新失败但会话已更新
- tensorflow - TensorFlow - 在 fit_generator 中使用 class_weights 会导致内存泄漏
- android - android studio 3.4.3:无法解析依赖
- php - PHP将数据附加到xml文件
- python - 如何用openpyxl“格式化单元格”?
- python - 在将数据框中循环列表中的字符串与外部列表匹配到同一数据框中的新列后追加一个单词
- google-apps-script - 如何在已导入电子邮件后获取脚本以获取电子邮件?(忽略已被脚本调用的电子邮件)
- javascript - 如何将 javascript 表单中的变量传递给 python(在同一台计算机上)?
- android - Ionic Cordova 与 Cordova 命令的区别