首页 > 后端开发 > Golang > 当我尝试从 Google 云端硬盘下载公共文件时,为什么我的 Go 程序会下载一个空的 zip 文件?

当我尝试从 Google 云端硬盘下载公共文件时,为什么我的 Go 程序会下载一个空的 zip 文件?

Patricia Arquette
发布: 2024-10-30 14:16:26
原创
477 人浏览过

Why does my Go program download an empty zip file when I try to download a public file from Google Drive?

在 Golang 中从 Google Drive 下载公共文件

尝试从 Google Drive 下载公开共享的 zip 文件时,您可能会遇到空白“file.zip”的问题。相反,会创建“.zip”。这是由于涉及 Google Drive 或 Go 的潜在错误所致。

问题的根源在于 Google Drive 提供的初始下载 URL 重定向到包含星号 (*) 字符的第二个 URL作为分隔符。然而,当 Go 尝试获取此 URL 时,它将星号编码为 *,将 URL 更改为:

https://doc-00-c8-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/8i67l6m6cdojptjuh883mu0qqmtptds1/1376330400000/06448503420061938118/%2A/0B2Q7X-dUtUBebElySVh1ZS1iaTQ?h=16653014193614665626&e=download
登录后复制
登录后复制

不幸的是,Google 对此编码的 URL 响应“403 Forbidden”,表明 * 编码未成功解释为星号。

要解决此问题:

  1. 获取正确的 URL: 使用网络浏览器或 cURL 等工具访问最初提供的下载 URL 并按照重定向进行操作,直到到达包含星号的最终 URL,该 URL 应类似于:
https://doc-00-c8-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/8i67l6m6cdojptjuh883mu0qqmtptds1/1376330400000/06448503420061938118/*/0B2Q7X-dUtUBebElySVh1ZS1iaTQ?h=16653014193614665626&e=download
登录后复制
  1. 手动编码星号: 使用百分比编码对更正后的 URL 中的星号 (*) 字符进行手动编码。这会产生以下 URL:
https://doc-00-c8-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/8i67l6m6cdojptjuh883mu0qqmtptds1/1376330400000/06448503420061938118/%2A/0B2Q7X-dUtUBebElySVh1ZS1iaTQ?h=16653014193614665626&e=download
登录后复制
登录后复制
  1. 使用更正的 URL: 更新您的 Go 代码以使用手动编码的 URL。这应该可以让您从 Google 云端硬盘成功下载 zip 文件。

以上是当我尝试从 Google 云端硬盘下载公共文件时,为什么我的 Go 程序会下载一个空的 zip 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板