简体   繁体   English

无法将我的图像上传到 android 工作室中的 firebase

[英]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 应用程序中的用户登录,或者允许未经身份验证的用户上传到控制台,如下所示:

  1. Go to your Firebase Console Go 到您的 Firebase 控制台
  2. Click Storage单击存储
  3. Click Rules点击规则
  4. Change your rules file to this:将您的规则文件更改为:
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中的存储规则。

  1. Go to firebase console Go 转 firebase 控制台

  2. Click on Storage点击存储

  3. Click Rules点击规则

  4. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM