[英]Cant upload my image to firebase in android studio
so here my code of upload_iklan.java, there's no error but app always crashed when i try to upload it所以这里是我的upload_iklan.java代码,没有错误,但是当我尝试上传时应用程序总是崩溃
private void Upload() { if (mimgUrl.= null) { StorageReference fileReference = storageReference.child(System.currentTimeMillis() + ";" + getFileExtension(mimgUrl)); private void Upload() { if (mimgUrl.= null) { StorageReference fileReference = storageReference.child(System.currentTimeMillis() + ";" + getFileExtension(mimgUrl));
mUploadTask = fileReference.putFile(mimgUrl)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
progressBar.setProgress(0);
}
}, 500);
Toast.makeText(upload_iklan.this, "Upload successful", Toast.LENGTH_LONG).show();
Upload upload = new Upload(etFile.getText().toString().trim(),
taskSnapshot.getMetadata().getReference().getDownloadUrl().toString());
String uploadId = databaseReference.push().getKey();
databaseReference.child(uploadId).setValue(upload);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(upload_iklan.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
progressBar.setProgress((int) progress);
}
});
} else {
Toast.makeText(this, "No file selected", Toast.LENGTH_SHORT).show();
}
}
here's the info这是信息
E/StorageException: StorageException has occurred.
An unknown error occurred, please check the HTTP result code and inner exception for server response.
Code: -13000 HttpResult: 0
E/AndroidRuntime: FATAL EXCEPTION: FirebaseStorage-Upload-1
Process: com.example.latihan, PID: 8223
java.lang.NoSuchMethodError: No virtual method getToken(Z)Lcom/google/android/gms/tasks/Task; in class Lcom/google/firebase/FirebaseApp; or its super classes (declaration of 'com.google.firebase.FirebaseApp' appears in /data/app/com.example.latihan-WUsFfg5SkqkBfTa4zb29Fg==/base.apk)
at com.google.firebase.storage.internal.Util.getCurrentAuthToken(com.google.firebase:firebase-storage@@16.0.4:148)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(com.google.firebase:firebase-storage@@16.0.4:65)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(com.google.firebase:firebase-storage@@16.0.4:57)
at com.google.firebase.storage.UploadTask.sendWithRetry(com.google.firebase:firebase-storage@@16.0.4:457)
at com.google.firebase.storage.UploadTask.beginResumableUpload(com.google.firebase:firebase-storage@@16.0.4:257)
at com.google.firebase.storage.UploadTask.run(com.google.firebase:firebase-storage@@16.0.4:198)
at com.google.firebase.storage.StorageTask.lambda$getRunnable$7(com.google.firebase:firebase-storage@@16.0.4:1106)
at com.google.firebase.storage.StorageTask$$Lambda$12.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
E/StorageException: StorageException has occurred.
An unknown error occurred, please check the HTTP result code and inner exception for server response.
Code: -13000 HttpResult: 0
Welcome to Stack Overflow:)欢迎来到堆栈溢出:)
By default, your firebase storage rules requires your user to be logged in before you can upload any files.默认情况下,您的 firebase 存储规则要求您的用户登录后才能上传任何文件。
So, if you want to upload a picture successfully, either log in with a user in your android app or allow unauthenticated users to upload to the console like this:因此,如果您想成功上传图片,请使用 android 应用程序中的用户登录,或者允许未经身份验证的用户上传到控制台,如下所示:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
//allow read, write: if request.auth != null;
allow read, write
}
}
}
Change the rules of storage in firebase.更改firebase中的存储规则。
Go to firebase console Go 转 firebase 控制台
Click on Storage点击存储
Click Rules点击规则
Edit rules to the rule given below将规则编辑为下面给出的规则
rules_version = '2';规则版本='2'; service firebase.storage { match /b/grocery-e7c47.appspot.com/o { match /{allPaths=**} { allow read, write: if request.auth;= null;
服务 firebase.storage { match /b/grocery-e7c47.appspot.com/o { match /{allPaths=**} { 允许读取,写入:如果 request.auth;= null; } } }
} } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.