【发布时间】:2020-04-16 16:59:39
【问题描述】:
我正在尝试使用图像按钮上传图像。我没有收到任何错误或崩溃,但在上传我的图片后,我收到了一条警报:“失败!”,以及 e 的消息。
你能帮帮我吗?
private void uploadImage() {
final ProgressDialog pd = new ProgressDialog(getContext());
pd.setMessage("Uploading");
pd.show();
if(imageUri != null) {
final StorageReference fileReference = storageReference.child(System.currentTimeMillis() + "." + getFileExtension(imageUri));
uploadTask = fileReference.getFile(imageUri);
uploadTask.continueWith(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if(!task.isSuccessful()) {
throw task.getException();
}
return fileReference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if(task.isSuccessful()) {
Uri downloadUri = task.getResult();
String mUri = downloadUri.toString();
reference = FirebaseDatabase.getInstance().getReference().child("users").child(fuser.getUid());
HashMap<String, Object> map = new HashMap<>();
map.put("imageURL", mUri);
reference.updateChildren(map);
pd.dismiss();
} else {
Toast.makeText(getContext(), "Failed!", Toast.LENGTH_SHORT).show();
pd.dismiss();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
pd.dismiss();
}
});
} else {
Toast.makeText(getContext(), "No Image Selected", Toast.LENGTH_SHORT).show();
}
}
【问题讨论】:
-
你能显示堆栈跟踪吗?
-
消息到底是什么?请具体说明您正在观察的内容。
-
@ViniciusAlmada 太长了
-
@DougStevenson 消息是:该位置不存在对象
-
您没有在任何地方调用
fileReference.put方法,这意味着您没有上传任何数据。因此,当您调用fileReference.getDownloadURL()时,它会引发错误,因为该位置没有文件可以返回下载 URL。我建议阅读uploading files 上的文档。
标签: java android firebase firebase-storage