从 Google Drive 下载公共文件 - Golang

2023-11-27

我有一个 zip 文件存储在 Google Drive 上(它是公开共享的)。我想知道如何在Golang中下载它。当前代码仅创建一个名为“file.zip”的空白文件:

package main

import (
    "fmt"
    "io"
    "net/http"
    "os"
)

func main() {
    url := "https://docs.google.com/uc?export=download&id=0B2Q7X-dUtUBebElySVh1ZS1iaTQ"
    fileName := "file.zip"
    fmt.Println("Downloading file...")

    output, err := os.Create(fileName)
    defer output.Close()

    response, err := http.Get(url)
    if err != nil {
        fmt.Println("Error while downloading", url, "-", eerrror)
        return
    }
    defer response.Body.Close()

    n, err := io.Copy(output, response.Body)

    fmt.Println(n, "bytes downloaded")
}

这似乎是一个错误,无论是 Google Drive 还是 golang,我不确定是哪一个!

问题是您提供的第一个 URL 重定向到第二个 URL,如下所示

https://doc-00-c8-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/8i67l6m6cdojptjuh883mu0qqmtptds1/1376330400000/06448503420061938118/*/0B2Q7X-dUtUBebElySVh1ZS1iaTQ?h=16653014193614665626&e=download

请注意*在合法的 URL 中这个堆栈溢出问题。然而,它作为分隔符确实具有特殊含义。

Go 使用以下命令获取 URL*编码为%2A像这样

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

Google 会回复“403 Forbidden”。

谷歌似乎没有解决这个问题%2A into a *.

根据维基百科上的这篇文章保留字符(其中*是其中之一)在 URI 方案中使用:如果需要将该字符用于某些其他目的,则该字符必须进行百分比编码。

我不是这方面的专家,不能说谁是对的,但既然谷歌写了问题的两个部分,那肯定是他们的错!

这是我用于测试的程序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Google Drive 下载公共文件 - Golang 的相关文章

  • 重新插入通道导致死锁

    我有稳定的入站 作业 流 将其输入到无缓冲通道中 我有一个for range循环来迭代项目并处理它们 如果处理该项目失败 我会将项目重新插入通道中 以便稍后重试 问题是当我将项目重新插入通道时 它陷入僵局 我明白为什么会发生这种情况 处理器
  • 是否可以使用从服务器端 Oauth2 获取的访问令牌打开 google picker?

    我在服务器端使用 Oauth2 集成了我的 Google 驱动器 并在数据库中存储了访问令牌和刷新令牌等凭据 const clientId process env GOOGLE DRIVE CLIENT ID const clientSec
  • 我应该避免在 golang 中使用单例包吗?

    现在我有一个包裹store包含以下内容 package store var db Database func Open url string error open db connection func FindAll model inter
  • 如何在 Ubuntu 中将 Go 程序作为守护进程启动?

    在 Ubuntu 中将 Go 程序作为守护进程启动的正确方法是什么 然后我将使用 Monit 对其进行监控 我应该做这样的事情 go run myapp go 我应该考虑 Go 特有的事情吗 您应该为您的程序构建一个可执行文件 go bui
  • 根据值匹配数组

    我使用以下代码来解析 yaml 并应得到输出为runners对象和函数build应更改数据结构并根据以下结构提供输出 type Exec struct NameVal string Executer string 这是我尝试过的 但我不知道
  • 递归追加到切片不起作用

    我正在尝试学习 Go 但我不明白为什么递归调用堆栈末尾的这段代码返回一个空切片 有帮助吗 还tmp甚至似乎没有在调试器中注册 func main input 3 int 4 6 7 expected 6 7 4 6 7 4 6 4 7 fm
  • 在 Go/ 中创建/更新 google 驱动器权限/ [使用 api 创建电子表格但无法访问它]

    我正在尝试使用 google Drive api 和以下代码创建电子表格 但我无法访问它 update 该文件似乎不在我在这里指定的驱动器中 有人知道为什么会发生这种情况吗 update 在字段中添加了父母 但有 404 错误 说找不到文件
  • 如何列出我的应用程序以供下载文件?

    我想通过我的应用程序从浏览器下载文件 我正在尝试将我的应用程序列在complete action using对话 它显示其他操作 例如查看文件等 但在下载文件的情况下 它不会显示在对话框中 我怎样才能像图片中那样列出我的应用程序 我在我的活
  • Go 编程语言中的“方法需要指针接收器”

    我刚刚看到了 Go 编程语言的演示 并想尝试写几行 一切工作正常 直到我尝试在这种情况下使用界面 我该如何解决这个问题 package main import fmt type entity float32 func e entity in
  • 与 Reflect.StructTag.Get 不兼容

    我当时在 Google Cloud 中工作 一切都很好 但是当我在 PC 中克隆所有项目时 每个 JSON 结构中都有此消息 结构体字段标签bson edad json edad omitempty 与reflect StructTag G
  • 引入 V8 后,Google Apps 脚本无法为其他用户完全执行

    我编写了一个脚本 得到了这里好心人的大力帮助 该脚本使用 Google Sheets 脚本复制 Google Drive 上的文件夹 和内容 它运行了很长一段时间 但后来我启用了 V8 引擎 现在已禁用 问题是 它仍然适用于我 也许还有其他
  • Golang 有 libfaketime 替代品吗?

    我想自动化一些测试 我必须操纵系统时间来检查用 golang 编写的程序的身份验证行为 根据这个帖子 https stackoverflow com questions 36024872 libfaketime doesnt work wi
  • Laravel 文件下载 - php_fileinfo 扩展未启用

    我正在使用 Laravel 5 4 13 和 PHP 7 1 并迁移到共享主机 我正在尝试使该网站正常运行 但由于缺少扩展名而无法正常运行 php fileinfo 这是网站崩溃的代码 file base path storage app
  • 指针和切片引用类型 - 接收器

    我认为一旦向我提出这个问题就会有点明显 但现在以下内容还没有点击 type Stack interface func stack Stack Push x interface stack append stack x 我有一个名为 Stac
  • 如何在 Docker 容器中持久保存 go 1.11 模块?

    我正在将 Go 1 10 应用程序迁移到 Go 1 11 这还包括从dep https golang github io dep to mod https github com golang go wiki Modules用于管理依赖关系
  • 如何使用 Python 中的 pydrive 查找 Google Drive 中的子文件夹 id?

    Google Drive 上的目录结构如下 在我的驱动器 BTP BTP 4内 我需要获取 BTP 4 的文件夹 ID 以便可以从该文件夹传输特定文件 我该怎么做 fileList GoogleDrive self driveConn Li
  • http:多余的response.WriteHeader调用

    我有一个HandleFunc 如果成功的话 我希望 显然 能够 sent a 200回复 在回复中写一条信息性消息 但是以下代码片段 在快乐路径中执行 if fullRun w Write byte successMsg w WriteHe
  • 如何最大限度地减少 Go 中的垃圾收集?

    有时您可能想避免 最小化垃圾收集器 所以我想确定如何做到这一点 我认为下一个是正确的 在函数的开头声明变量 使用数组代替切片 还有吗 为了最大限度地减少 Go 中的垃圾收集 您必须最大限度地减少堆分配 为了最大限度地减少堆分配 您必须了解分
  • 如何使用 glide golang 安装私有仓库

    我在用glide作为我的 golang 项目的包管理 我无法使用私有存储库glide get bezos gitlab com gomock 即使我提供了正确的凭据 它也会询问用户名和密码 但最终会抛出错误 请提出任何想法 这与glide或
  • 如何在Go包之间共享测试接口?

    Go 不会在不同包的测试文件之间共享代码 因此测试接口的定义不会自动重用 在实践中我们如何解决这个问题 使用示例testing quick foo foo go package foo type Thing int const X Thin

随机推荐

  • label: .word label 在 ARM 汇编中的含义是什么

    我正在uboot中查看以下序列 globl start start b reset ldr pc undefined instruction ldr pc software interrupt ldr pc prefetch abort l
  • Rails3 中的远程 form_tag 没有命名路由

    使其真正异步发布的正确咒语是什么 form tag controller gt magic action gt search method gt post remote gt true do method post 和remote true
  • 在 Android 中获取外部 SD 卡位置

    我有一个应用程序 在 SD 卡中预存了大量数据 我们支持所有平板电脑ICS 以后 我无法找到在所有设备上正确访问 SDCard 位置的方法 我查看了这里给出的各种解决方案 但它们似乎并不适用于所有情况 寻找通用解决方案 即使有人能告诉我SD
  • 不安全的 JavaScript 尝试通过 URL 访问框架

    我有一个带有 Iframe 的页面和来自 Iframe 的 Javascript 可以访问父框架的功能 这些页面位于同一服务器上 不是跨域脚本 我对 FF 和 IE 没有任何问题 但当我在 Chrome 上使用它时 我收到以下消息 不安全的
  • 未知标签 (c:foreach)。日食中

    我有 jstl 代码 它由 maven 构建得很好 但是 Eclipse 出现编译错误 未知标签 c foreach 代码在这里
  • JavaFX 自定义控件(TextField)不起作用

    我正在尝试使用 JavaFX 和 SceneBuilder 1 1 制作自定义控件 我有这个代码 FXML
  • 如何在Windows azure辅助角色中创建多个线程

    我想在一个辅助角色中执行多个操作 如何以辅助角色创建线程 您可以在中添加多个工人WorkerRole OnStart 如此处所述http www 31a2ba2a b718 11dc 8314 0800200c9a66 com 2010 1
  • JavaScript 通过代码模拟右键单击

    我正在使用 Selenium 编写一些 UI 测试 并且我有一个使用 Dojo 工具包的 JavaScript 树控件 我已经使用 Dojo 提供的示例为树的每个节点实现了一个上下文菜单 但我需要 Selenium 测试来 调用 树节点上的
  • Bootstrap不使用复选框的“checked”属性

    我正在使用引导程序 我有一个表 标题和每列中都有一个复选框 我试图在 jQuery 上实现 检查所有 功能 但引导程序似乎不使用检查属性 正如我所看到的 它在我的复选框周围添加了 span 标签 并向其添加了一个 checked 类 是否有
  • XPath - 选择一个或另一个元素

    我正在使用 XPath 从 HTML 文档中获取一个元素 该元素必须有一个特定的id 或者如果id不存在 则获取一个保证存在的元素 例如body元素 要通过 id 获取元素 我使用 css may not exist 为了获得后备元素 比如
  • 使用 Viewbox 缩放/拉伸在 WPF 中维护固定粗细的线条

    我有一个
  • Spring Cloud Gateway 用于复合 API 调用?

    我开始构建一个微服务 API 网关 并且正在考虑使用 Spring Cloud 来帮助我进行路由 但某些对网关 API 的调用将需要对不同服务发出多个请求 假设我有 2 项服务 订单详情服务 and 送货服务 我想要一个网关端点获取 订单
  • 替换spark Dataframe中所有列名称中的空格

    我的 Spark 数据框的某些列名称中带有空格 必须用下划线替换 我知道可以使用以下命令重命名单个列withColumnRenamed 在sparkSQL中 但要重命名 n 个列 这个函数必须链接 n 次 据我所知 为了自动化此操作 我尝试
  • Scala 中私有构造函数有什么用?

    在 Java 中 最常见的用法之一是定义 Singleton 类 然而 由于 Scala 中没有 静态 类 那么私有构造函数的使用示例有哪些 您可以访问类的伴随对象中的私有构造函数 这允许您创建创建类的新实例的替代方法 而无需公开内部构造函
  • 渐变/淡化 CSS 框阴影?

    我有一个正在尝试构建的 CSS 下拉菜单 并且下拉菜单的背景有一个褪色 锥形的框阴影 我很难弄清楚如何让盒子阴影真正变细 淡出 这就是我现在所处的位置 http jsfiddle net Shpigford f9aKR 我尝试过使用 bef
  • 类型错误:无法 pickle _thread.RLock 对象

    在检查了 Stackoverflow 上的所有现有答案后 检查点 keras 模型 TypeError 无法 pickle thread lock 对象和这里 类型错误 无法 pickle thread lock 对象 我还没有发现为什么这
  • browserVignettes 没有找到它们实际所在的位置

    我有一个打包到 github 存储库上有 2 个小插图vignettes 目录 我尝试下载如果devtools像这样的包 gt if require devtools install packages devtools require de
  • 在 VSCode 扩展中构建动态菜单

    我正在编写一个 VSC 插件 在激活时 我想进行 XHR 调用 然后使用该 XHR 的结果填充菜单 似乎没有办法动态地将菜单添加到状态栏或将动态项目添加到项目列表 你不能那样做 所有命令必须预先定义在package json因为它的声明式方
  • C++ LNK1120 和 LNK2019 错误:“无法解析的外部符号 WinMain@16”

    我正在尝试做戴特尔书中的另一个练习 该程序计算每月利息并打印每个储户的新余额 由于练习是与动态内存相关的章节的一部分 因此我使用 new 和 delete 运算符 由于某种原因 我收到这两个错误 LNK2019 函数 tmainCRTSta
  • 从 Google Drive 下载公共文件 - Golang

    我有一个 zip 文件存储在 Google Drive 上 它是公开共享的 我想知道如何在Golang中下载它 当前代码仅创建一个名为 file zip 的空白文件 package main import fmt io net http o