gpt4 book ai didi

从 Google Drive 下载公共(public)文件 - Golang

转载 作者:IT王子 更新时间:2023-10-29 01:16:39 25 4
gpt4 key购买 nike

我在 Google Drive 上存储了一个 zip 文件(它是公开共享的)。我想知道如何在 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 驱动器或 golang 的错误,我不确定是哪个!

问题是您提供的第一个 URL 重定向到第二个 URL,看起来像这样

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

注意 URL 中的 * 根据 this stack overflow question 是合法的.然而,作为分隔符,它确实具有特殊含义。

Go 像这样获取带有 * 编码为 %2A 的 URL

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

Google 回复“403 Forbidden”。

Google 似乎没有将 %2A 解析为 *

根据 this article on wikipedia URI 方案中使用的保留字符(其中 * 是一个):如果有必要将该字符用于其他目的,则该字符必须进行百分比编码。

我不是这方面的专家,无法判断谁是对的,但由于 Google 写了问题的两个部分,所以肯定是他们的错!

Here is the program I was using for testing

关于从 Google Drive 下载公共(public)文件 - Golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18177419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com