我无法从暂停状态恢复 UploadTask。如果我让它完成而不尝试暂停上传,我就能够成功上传视频。根据Firebase 存储 Android 文档 https://firebase.google.com/docs/storage/android/upload-files#manage_uploads你可以使用resume
函数恢复之前暂停的 UploadTask。不幸的是,当我尝试自己执行示例时,我观察到
04-11 15:20:36.285 9432-9660/io.pristine.firebasesample E/UploadTask:无法读取上传字节
java.io.IOException:流已关闭
在 java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:162)
在 java.io.BufferedInputStream.read(BufferedInputStream.java:325)
在 com.google.android.gms.internal.zzbtu.zzqP(来源未知)
在 com.google.firebase.storage.UploadTask.zzacR(来源未知)
在 com.google.firebase.storage.UploadTask.run(来源未知)
在 com.google.firebase.storage.StorageTask$8.run(来源未知)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
在 java.lang.Thread.run(Thread.java:761)
紧接着又是另一个:
04-11 15:20:36.285 9432-9660/io.pristine.firebasesample E/StorageException:发生了 StorageException。
发生未知错误,请检查服务器响应的 HTTP 结果代码和内部异常。
代码:-13000 HttpResult:200
HttpResult 200 看起来很正常-13000 看起来像 ERROR_UNKNOWN https://developers.google.com/android/reference/com/google/firebase/storage/StorageException.html#ERROR_UNKNOWN
我上传了一个非常简单的 Android 项目来重现该错误 - 只需创建一个 FirebaseStorage 帐户并将 google-services.json 文件放入您的项目中并设置用户名和密码 https://github.com/pristineio/Firebase-Sample/tree/firebase-storage-bug
github 存储库出现故障时重现的基本步骤:
- 使用 firebase 身份验证进行身份验证(不确定是否需要)
- 从资产复制二进制文件(如果需要,您可以从 SD 卡读取)
- 使用 putFile(Uri, StorageMetadata) 启动 UploadTask
- 在上传开始后和完成前调用 UploadTask.pause() 暂停 uploadTask
- 通过调用 UploadTask.resume() 验证上传任务已暂停后,在一两秒内恢复上传任务
- 观察存储异常
我在用着firebase-database:10.2.1
, firebase-auth:10.2.1
& firebase-storage:10.2.1
作为唯一的依赖项,并在支持 google play 服务的多个设备上进行了测试。 (Google Play Availability: SUCCESS
)
使此功能发挥作用的目标是允许应用程序的用户手动暂停和恢复上传。 (有些位于 Wi-Fi 热点上,据我所知,这些热点是按流量计费的,对于 Android 操作系统来说是不可见的)
火力战士在这里
该错误不久前已修复,但修复尚未到达客户端库。请查找下一版本 SDK 的更新。如果您仍然遇到问题,请在此处发表评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)