FirebaseStorage上传报错StorageException: Could not open resulting stream求助
解决Firebase Storage上传时的
StorageException: Could not open resulting stream错误 问题重现
在使用Firebase Storage进行文件上传时,出现StorageException: Could not open resulting stream错误,核心上传代码如下:
var storage = FirebaseStorage.getInstance().reference storage.child(product.name).putBytes(convert.toByteArray()).addOnSuccessListener { progress.dismiss() startActivity(Intent(this, ProductList::class.java)) Toast.makeText(this, "Product Uploaded Successfully.", Toast.LENGTH_SHORT).show() }.addOnFailureListener { progress.dismiss() Toast.makeText(this, "Cannot Uploaded...", Toast.LENGTH_SHORT).show() }
已尝试更换Firebase项目,但问题未解决。
解决方案
- 验证字节数组完整性:检查
convert.toByteArray()生成的字节数组是否为空或损坏。可通过打印数组长度,或尝试将字节数组写入本地文件来确认数据有效性。 - 检查权限配置:
- 确认Firebase Storage安全规则允许上传操作,可临时设置测试规则(上线前需调整为严谨规则):
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if true; } } } - 确保AndroidManifest.xml中添加了必要的网络权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 确认Firebase Storage安全规则允许上传操作,可临时设置测试规则(上线前需调整为严谨规则):
- 更新Firebase依赖:将Firebase Storage依赖升级至最新稳定版,避免版本兼容问题。示例build.gradle配置:
implementation 'com.google.firebase:firebase-storage:20.3.0' // 替换为当前最新版本 - 规范文件名:检查
product.name是否包含特殊字符(如空格、斜杠、非ASCII字符),Firebase Storage路径对特殊字符有限制,建议对文件名做安全处理:val safeFileName = product.name.replace(Regex("[^a-zA-Z0-9._-]"), "_") storage.child(safeFileName).putBytes(convert.toByteArray()) - 排查网络环境:切换至稳定的Wi-Fi网络,排除因网络波动导致的流连接失败问题。
内容的提问来源于stack exchange,提问作者Sanan Abid
相关产品推荐
相关产品推荐

