You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:java.lang.IllegalArgumentException存储Uri解析失败问题

问题排查与解决方案

异常信息

抛出java.lang.IllegalArgumentException,提示信息:"The storage Uri could not be parsed"

相关代码

val storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(bookUrl)

// val storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(bookUrl).child("downloadsCount")
storageReference.getBytes(Constants.MAX_BYTES_PDF)
    .addOnSuccessListener { bytes ->
        Log.d(TAG,"downloadBook : Book downloaded...")
        saveToDownloadsFolder(bytes)
    }
    .addOnFailureListener { e ->
        progressDialog.dismiss()
        Log.d(TAG,"downloadBook : Failed to download book due to ${e.message}")
        Toast.makeText(this,"Failed to download book", Toast.LENGTH_SHORT).show()
    }
}

可能原因

  • URL格式不合法:bookUrl不是Firebase Storage的有效URL,缺少gs://或https://firebasestorage.googleapis.com/这类标准前缀,或者路径格式错误。
  • URL内容无效:bookUrl为空、包含空格/未转义的特殊字符,或者指向的是Firebase其他服务(如Realtime Database)的URL,而非Storage资源。
  • Bucket配置不匹配:URL中的存储桶名称与项目中Firebase Storage的配置不一致。

解决方案

  1. 校验bookUrl的有效性
    打印bookUrl的实际值,确认其符合Firebase Storage的URL规范:

    • GS协议格式示例:gs://your-project-bucket/books/sample.pdf
    • HTTPS访问链接格式示例:https://firebasestorage.googleapis.com/v0/b/your-project-bucket/o/books%2Fsample.pdf?alt=media
  2. 修复URL格式问题
    如果bookUrl是从数据库或其他地方获取的存储路径(而非完整URL),改用getReference()方法直接构建引用:

    // 假设bookPath是存储路径,如"books/sample.pdf"
    val storageReference = FirebaseStorage.getInstance().getReference(bookPath)
    
  3. 清理URL中的无效内容
    确保bookUrl没有空格、乱码,若包含特殊字符(如中文、空格),先进行URL编码:

    val encodedBookUrl = URLEncoder.encode(bookUrl, "UTF-8")
    val storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(encodedBookUrl)
    
  4. 核对Storage配置
    检查项目的Firebase控制台中,Storage的存储桶名称与URL中的bucket部分是否一致,确认没有拼写错误。

内容的提问来源于stack exchange,提问作者K Arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:22:12