通过站点直接下载GCS对象跳转至GCS UI无法下载问题咨询
GCS新存储桶公开PDF无法直接下载问题修复方案
问题根因
GCS在2023年后对所有新创建的存储桶默认开启了更严格的公共访问拦截规则,和旧桶的默认配置存在差异,即使你沿用了旧桶的操作步骤,也会触发新的默认限制:
- 新桶默认开启「阻止所有公共访问」开关,直接拦截
allUsers的匿名访问请求 - 新上传的对象默认未配置
Content-Disposition强制下载属性,浏览器识别到PDF资源时会优先跳转至GCS预览页而非直接触发下载 - 部分区域新桶默认启用*统一桶级访问权限(UBLA)*后,旧的对象级ACL授权不再生效
修复步骤
- 第一步:调整存储桶公共访问配置
进入GCS控制台对应存储桶的「权限」页,关闭「阻止公共访问」分类下的4个默认开启的开关,保存配置后等待2-5分钟生效。 - 第二步:配置正确的IAM权限
在同一权限页的IAM授权栏,添加主体allUsers,为其分配Storage Object Viewer角色,注意不要误选桶级的Viewer权限,该权限无法访问具体存储对象。 - 第三步:修正PDF对象元数据
- 单个文件修改可直接在控制台对象详情的「元数据」栏,添加
Content-Disposition字段,值设为attachment,同时确认Content-Type为application/pdf - 批量修改可使用gsutil工具执行命令:
gsutil -m setmeta -h "Content-Disposition: attachment" gs://<你的存储桶名称>/*.pdf
- 单个文件修改可直接在控制台对象详情的「元数据」栏,添加
- 第四步:确认下载链接格式
站点内的下载按钮需使用GCS公开直链格式:https://storage.googleapis.com/<你的存储桶名称>/<菜单文件路径>.pdf,不要使用控制台生成的带身份认证参数的预览链接。
内容的提问来源于stack exchange,提问作者Erik Devlies
相关产品推荐
相关产品推荐

