[英]Why Couldn't I upload Image file using ImageButton in Android Studio?
我正在嘗試使用圖像按鈕上傳圖像。 我沒有收到任何錯誤或崩潰,但在上傳我的圖片后,我收到一條警報:“失敗”。 和 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();
}
}
如果您的錯誤消息是:
Object 在該位置不存在
那么這意味着您嘗試下載的 object 根本不存在。 這是您用於構建該位置的代碼:
final StorageReference fileReference = storageReference
.child(System.currentTimeMillis() + "." + getFileExtension(imageUri));
因此,您似乎正在嘗試使用與當前時間匹配的名稱來獲取應該存在的文件。 我懷疑這幾乎永遠不會奏效。 由於我們看不到您的存儲桶的內容,而且我們不知道您在此處傳遞的確切字符串,因此不知道如何解決此問題。 您的代碼應僅獲取其名稱存在於存儲桶中的對象。
您沒有在任何地方調用fileReference.put
方法,這意味着您沒有上傳任何數據。
因此,當您調用fileReference.getDownloadURL()
時,它會引發錯誤,因為該位置沒有文件可以返回下載 URL 。
我建議閱讀有關 上傳文件的文檔,並等待上傳完成,然后再嘗試下載 URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.