Firebase Firestore运行代码报X-Goog-Upload-Command头缺失错误
报错原因与修复方案
核心问题说明
你遇到的X-Goog-Upload-Command请求头缺失报错,根本原因是方法调用场景不匹配:getUploadSessionUri()是Firebase Cloud Storage 断点续传上传功能专属的方法,仅在Storage上传任务的回调中返回有效值,如果你在Firestore文档读写的任务回调中调用该方法,就会触发请求头缺失的报错。
你触发的报错信息:
Invalid request. X-Goog-Upload-Command header is missing
问题代码:
if (task.isSuccessful()){ Uri download_uri = task.getResult().getUploadSessionUri(); }
修复方案
根据你的实际业务场景选择对应修复逻辑:
- 如果你正在操作Firestore读写文档,直接替换为文档快照读取逻辑即可:
if (task.isSuccessful()) { DocumentSnapshot document = task.getResult(); if (document.exists()) { // 按字段名读取文档存储的内容即可 String targetValue = document.getString("自定义字段名"); } } - 如果你实际是在做Cloud Storage文件上传,不要用
getUploadSessionUri()获取下载地址,正确逻辑如下:if (task.isSuccessful()) { // 你的Storage文件引用对象调用获取下载地址方法 yourStorageRef.getDownloadUrl().addOnSuccessListener(uri -> { // 此处获取的uri才是可用的文件下载地址 Uri download_uri = uri; }); } - 如果你确实需要使用断点续传上传能力,需要在初始化上传请求时手动添加请求头
X-Goog-Upload-Command: start启动会话,后续分片上传时同步更新该请求头的取值即可。
内容的提问来源于stack exchange,提问作者Diyorbek Achilov
相关产品推荐
相关产品推荐

