6

我一直在尝试将图像上传到新的 firebase 存储服务。它正在抛出 StorageException

E/StorageException:发生了 StorageException。发生未知错误,请检查服务器响应的 HTTP 结果代码和内部异常。代码:-13000 HttpResult:400

E/StorageException:服务器已终止上传会话 java.io.IOException:服务器已在 com.google.firebase.storage.UploadTask.zzVi(未知来源)在 com.google.firebase.storage.UploadTask 终止上传会话.zzVh(Unknown Source) at com.google.firebase.storage.UploadTask.run(Unknown Source) at com.google.firebase.storage.StorageTask$5.run(Unknown Source) at java。util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 在 java.lang.Thread.run(Thread.java:818)

4

15 回答 15

5

在 google firebase 中,这种类型StorageException通常是由于 StorageReference引用错误引起的。

FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("gs://<your-bucket-name>");

// Create a reference to "file"
StorageReference mountainsRef = storageRef.child("file.jpg");

确保对文件的引用正确。


文档参考

可以在此处找到有关创建存储引用的详细信息

可以在此处找到有关存储异常代码的详细信息以供进一步参考

于 2016-10-22T07:00:56.900 回答
4

我也遇到了同样的异常,但通过简单地授予应用程序存储权限来解决它:

设置 > 应用程序 > {我的应用程序} > 权限 > 启用存储

以上部分也可以通过Java代码完成,我在Android Marshmallow的教程中学习过。另外,请确保在 Android Manifest 文件中声明 INTERNET 和 READ_EXTERNAL_STORAGE 的权限。但是,如果您仍然遇到异常,请尝试更新播放服务。

于 2017-06-21T11:07:24.867 回答
4

在您的 Firebase 控制台中,转到左侧的存储选项卡。单击规则选项卡并将您的规则设置为公开。使用以下代码将其设置为公开。

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

这有利于测试目的,但是,您应该使用经过身份验证的用户来保护您的数据库连接。

于 2018-04-24T00:55:45.520 回答
4

这把我整理出来了,没有一行代码更改;),我需要做的就是更新 firebase-storage 库。就我而言,它是'com.google.firebase:firebase-storage:16.4.0'并且在将其更新为'com.google.firebase:firebase-storage:17.0.0'一切之后再次开始正常工作。

于 2019-06-10T14:40:00.960 回答
2

不要忘记添加

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

在你的 AndroidManifest.xml

于 2017-06-06T16:55:39.097 回答
1

在 firestore 上传时,此问题可能会导致身份验证。您必须删除 firebase 存储规则代码中的身份验证部分。

删除它并发布 :if request.auth != null;

于 2020-08-09T05:10:16.673 回答
1

我面临着同样的问题。我删除了现有的 google.services.json 文件,从 firebase 控制台再次下载并将其添加到我的项目中。现在它可以成功运行。

于 2018-08-17T13:01:44.130 回答
1

我遇到了同样的问题。这不是存储权限问题,我只是更改了 Firebase 存储规则然后解决了。

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

以上是可以正常工作的默认规则。更改条件可能会导致异常。请在使用前检查您的状况。

于 2020-06-30T11:08:04.963 回答
1

在 Firebase 控制台中启用匿名身份验证。

于 2017-02-06T12:27:14.830 回答
1

我今天遇到了同样的问题。

于 2016-06-26T18:57:36.277 回答
0

当我没有在 Firebase 存储中创建引用的文件夹/存储桶时,我遇到了这个问题。与 Firebase 数据库不同,我认为(我还不确定),如果存储引用一开始不存在,它将不会创建存储桶。所以,先创建一个文件夹,然后再试一次。

于 2017-01-30T21:07:55.103 回答
0
```private StorageReference mStorage;
final StorageReference filepath = mStorage.child("log_images");
Task<Uri> downloadurl = filepath.getDownloadUrl();```

检查上述内容,最后确保最新版本的谷歌搜索(android 和 firebase)'com.google.firebase:firebase-storage:19.1.1'

于 2020-04-21T15:41:04.260 回答
0

无论存储引用是什么。您需要在putFile()方法中放置要上传的文件的正确 URI。

于 2021-01-30T10:54:36.380 回答
0
  1. 首先检查您是否已在您的清单中授予 Internet 权限。

  2. 检查您是否已在存储的“规则”选项卡中授予写入存储的正确授权权限。

  3. 尝试记录对您的Firebase 存储以及您尝试上传的文件的引用。检查它是否与您在浏览器中处理的 Firebase 项目相同。

就我而言,项目配置是错误的,这几乎是我们在项目中做的第一件事。但是,嘿!总比错过“;”要好

于 2017-12-03T09:21:09.187 回答
0

我也面临同样的情况,

  1. 从项目结构中更新所有建议的依赖项
  2. 更新 Google Play 服务
于 2019-12-16T14:55:01.410 回答