首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件上传到安卓firebase存储中的用户特定目录?

将文件上传到安卓firebase存储中的用户特定目录?
EN

Stack Overflow用户
提问于 2018-08-28 00:35:23
回答 1查看 1.7K关注 0票数 1

我正在尝试在Android中使用firebase存储上传文件。但我收到以下异常:

代码语言:javascript
复制
E/StorageException: StorageException has occurred.
                    User does not have permission to access this object.
                     Code: -13021 HttpResult: 403
E/StorageException: The server has terminated the upload session
                    java.io.IOException: The server has terminated the upload session
                        at com.google.firebase.storage.UploadTask.zzs(Unknown Source)
                        at com.google.firebase.storage.UploadTask.zzr(Unknown Source)
                        at com.google.firebase.storage.UploadTask.run(Unknown Source)
                        at com.google.firebase.storage.StorageTask.zzl(Unknown Source)
                        at com.google.firebase.storage.zzx.run(Unknown Source)
                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                        at java.lang.Thread.run(Thread.java:761)
                     Caused by: java.io.IOException: {  "error": {    "code": 403,    "message": "Permission denied. Could not perform this operation"  }}
                        at bft.a(:com.google.android.gms.dynamite_dynamitemodulesc@12874022@12.8.74 (040308-204998136):147)
                        at bft.a(:com.google.android.gms.dynamite_dynamitemodulesc@12874022@12.8.74 (040308-204998136):119)
                        at bfn.a(:com.google.android.gms.dynamite_dynamitemodulesc@12874022@12.8.74 (040308-204998136):5)
                        at nd.onTransact(:com.google.android.gms.dynamite_dynamitemodulesc@12874022@12.8.74 (040308-204998136):12)
                        at android.os.Binder.transact(Binder.java:499)
                        at com.google.android.gms.internal.firebase_storage.zza.transactAndReadExceptionReturnVoid(Unknown Source)
                        at com.google.android.gms.internal.firebase_storage.zzm.zze(Unknown Source)
                        at com.google.android.gms.internal.firebase_storage.zzq.zza(Unknown Source)
                        at com.google.android.gms.internal.firebase_storage.zzf.zza(Unknown Source)
                        at com.google.firebase.storage.UploadTask.zzc(Unknown Source)
                        at com.google.firebase.storage.UploadTask.run(Unknown Source) 
                        at com.google.firebase.storage.StorageTask.zzl(Unknown Source) 
                        at com.google.firebase.storage.zzx.run(Unknown Source) 
                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                        at java.lang.Thread.run(Thread.java:761) 
E/StorageException: StorageException has occurred.
                    User does not have permission to access this object.
                     Code: -13021 HttpResult: 403
E/StorageException: The server has terminated the upload session
                    java.io.IOException: The server has terminated the upload session
                        at com.google.firebase.storage.UploadTask.zzs(Unknown Source)
                        at com.google.firebase.storage.UploadTask.zzr(Unknown Source)
                        at com.google.firebase.storage.UploadTask.run(Unknown Source)
                        at com.google.firebase.storage.StorageTask.zzl(Unknown Source)
                        at com.google.firebase.storage.zzx.run(Unknown Source)
                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                        at java.lang.Thread.run(Thread.java:761)
                     Caused by: java.io.IOException: {  "error": {    "code": 403,    "message": "Permission denied. Could not perform this operation"  }}
                        at bft.a(:com.google.android.gms.dynamite_dynamitemodulesc@12874022@12.8.74 (040308-204998136):147)
                        at bft.a(:com.google.android.gms.dynamite_dynamitemodulesc@12874022@12.8.74 (040308-204998136):119)
                        at bfn.a(:com.google.android.gms.dynamite_dynamitemodulesc@12874022@12.8.74 (040308-204998136):5)
                        at nd.onTransact(:com.google.android.gms.dynamite_dynamitemodulesc@12874022@12.8.74 (040308-204998136):12)
                        at android.os.Binder.transact(Binder.java:499)
                        at com.google.android.gms.internal.firebase_storage.zza.transactAndReadExceptionReturnVoid(Unknown Source)
                        at com.google.android.gms.internal.firebase_storage.zzm.zze(Unknown Source)
                        at com.google.android.gms.internal.firebase_storage.zzq.zza(Unknown Source)
                        at com.google.android.gms.internal.firebase_storage.zzf.zza(Unknown Source)
                        at com.google.firebase.storage.UploadTask.zzc(Unknown Source)
                        at com.google.firebase.storage.UploadTask.run(Unknown Source) 
                        at com.google.firebase.storage.StorageTask.zzl(Unknown Source) 
                        at com.google.firebase.storage.zzx.run(Unknown Source) 
                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                        at java.lang.Thread.run(Thread.java:761) 

我的Java代码:

代码语言:javascript
复制
File f= new File(filePath.getPath());
mStorageRef = FirebaseStorage.getInstance().getReference();
StorageReference userReference = mStorageRef.child(mAuth.getUid());
StorageReference fileReference = userReference.child(f.getName());               
fileReference.putFile(filePath)

我在Firebase中的安全规则:

代码语言:javascript
复制
service firebase.storage {
    match /b/{bucket}/o {
        match /{userId} {      
            allow read,write: if request.auth.uid==userId;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-28 01:15:10

当我将安全规则更改为:

代码语言:javascript
复制
service firebase.storage {
    match /b/{bucket}/o {
        match /{userId} {
            match /{allPaths=**} {
                allow read, write: if request.auth.uid == userId;
            } 
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52043560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档