Golang谷歌存储可恢复上传HTTP 401

     2023-02-23     234

关键词:

【中文标题】Golang谷歌存储可恢复上传HTTP 401【英文标题】:Golang google storage resumable upload HTTP 401 【发布时间】:2015-03-30 17:27:02 【问题描述】:

嘿,我正在尝试实现可恢复的上传到云存储。

但我得到一个 Status:"401 Unauthorized", StatusCode:401

我假设它与承载者有关,但我想不出另一种发送承载令牌的方法。

我已经能够使用 GetClinet 方法删除文件。

func GetClinet(c endpoints.Context) *http.Client 
    cli := &http.Client
        Transport: &oauth2.Transport
            Source: google.AppEngineTokenSource(c, storage.ScopeReadWrite),
            Base:   &urlfetch.TransportContext: c,
        ,
    

    return cli



client := GetClinet(con)

url := "https://storage.googleapis.com/bucketName/file.txt"
b := r.Header.Get("Authorization") //parse the bearer from user request
r, err = http.NewRequest("POST", url, nil)
r.Header.Add("Content-Type", "text/plain")
r.Header.Add("Content-Length", "0")
r.Header.Add("x-goog-resumable", "start")
r.Header.Add("Authorization", b)

resp, err := client.Do(r)

【问题讨论】:

我不确定“从用户请求中解析承载”是否意味着您正在运行网络服务器并且您想要访问用户的 Google Cloud Storage 帐户。如果是这样,您可能想熟悉一下:developers.google.com/accounts/docs/OAuth2WebServer @rein 仅针对该令牌的学习曲线就很高,在这种情况下文档还不够好,另一方面,代码更有用github.com/johnbalvin/google-cloud-go/blob/master/storage/… 【参考方案1】:

我也遇到了类似的问题,不知道你的情况是不是跟我一样。我的目标是

    用户客户端将元数据上传到我的服务器 服务器进行身份验证并存储在数据库中 服务器向 Google Cloud Storage 请求 resumabale upload url 服务器返回url给客户端 客户端使用 url 将媒体上传到 GCS

我也收到了 401 未经授权的退货。也许我没有正确设置标题?或者storage.SignedURL 不能正确处理可恢复的上传...?

我已经能够使用服务帐户 PEM 文件上传文件

func setGcsFile(c context.Context, fileId string, content []byte) error 
    expiration := time.Now().Add(time.Second * 30) //expire in 30 seconds

    data, err = ioutil.ReadFile(serviceAccountPEMFilename)
    if err != nil 
        fmt.Printf("error: %v", err)
        panic(err)
    

    log.Debugf(c, "Getting upload url")
    opts := &storage.SignedURLOptions
        GoogleAccessID: googleAccessID,
        PrivateKey:     data,
        Method:         "PUT",
        Expires:        expiration,
    

    putURL, err := storage.SignedURL(bucket, fileId, opts)
    if err != nil 
        log.Debugf(c, "%v", err)
        return err
    

    log.Debugf(c, "PUT URL : %v\n", putURL)

    client := urlfetch.Client(c)
    req, err := http.NewRequest("PUT", putURL, bytes.NewBuffer(content))
    res, err := client.Do(req)
    if err != nil 
        log.Debugf(c, "%v", err)
        return err
    
    res.Body.Close()
    log.Debugf(c, "Response Code: %s\n", res.Status)
    return nil

我正在考虑下一步拉取和修改storage.SignedURL 函数。

【讨论】:

可恢复上传的“临时文件”是不是计入每月存储费? (谷歌云存储)

】可恢复上传的“临时文件”是不是计入每月存储费?(谷歌云存储)【英文标题】:Dothe"tempfiles"ofresumableuploadscountinthemonthlystoragefee?(GoogleCloudStorage)可恢复上传的“临时文件”是否计入每月存储费?(谷歌云存储)【发... 查看详情

没有可恢复上传的“Access-Control-Allow-Origin”标头

...问题描述】:我们正在通过我们的AppEngine应用程序中的云存储JSONAPI生成可恢复的上传URL,该应用程序可用于移动设备和网络应用程序。在web应用程序中,使用XmlHt 查看详情

谷歌云存储:401 未经授权的错误

】谷歌云存储:401未经授权的错误【英文标题】:GoogleCloudStorage:401unauthorizederror【发布时间】:2022-01-1820:47:06【问题描述】:我的目标是将文件从cloudhub上传到GCP存储桶,我正在使用服务帐户,我唯一的选择是使用JsonKey文件。这... 查看详情

尝试使用 gcs json api、axios、vue3、quasar 和 node14 执行单个块可恢复上传到谷歌云存储时出现 cors 错误

...、axios、vue3、quasar和node14执行单个块可恢复上传到谷歌云存储时出现cors错误【英文标题】:Gettingcorserrorswhentryingtoperformasinglechunkresumableuploadtogooglecloudstorageusinggcsjsonapi,axios,vue3,quasarandnode14【发布时间】:2022-01-1707:46: 查看详情

golang http 恐慌的全局恢复处理程序

】golanghttp恐慌的全局恢复处理程序【英文标题】:globalrecoverhandlerforgolanghttppanic【发布时间】:2015-04-2900:26:53【问题描述】:我想创建全局错误处理程序以通过电子邮件发送。packagemainimport("github.com/gorilla/mux""log""net/http")funcmain()r... 查看详情

在 bintray 上上传二进制文件时 HTTP/1.1 401 未经授权

】在bintray上上传二进制文件时HTTP/1.1401未经授权【英文标题】:HTTP/1.1401Unauthorizedwhenuploadingbinaryonbintray【发布时间】:2017-02-1900:18:59【问题描述】:我正在尝试从androidstudio上传一个android库模块,后面是这个博客:https://inthecheese... 查看详情

springboot可恢复文件上传tus-java-client库的使用(代码片段)

1、说明tus是一种基于HTTP的可恢复文件上传协议。可恢复意味着上传可以随时中断,并且可以恢复,而无需再次重新上传以前的数据。如果用户想要暂停,中断可能会自动发生,或者在网络问题或服务器中断的情... 查看详情

GCS 可恢复上传速度

】GCS可恢复上传速度【英文标题】:GCSresumableuploadsspeed【发布时间】:2014-10-2719:06:32【问题描述】:我有一个关于使用可恢复上传到GoogleCloudStorage的上传速度的问题。我编写了一个桌面java客户端来将大文件上传到GCS(它有一些... 查看详情

createWriteStream Node.js 上的可恢复和验证

...间】:2021-12-2915:04:46【问题描述】:我一直在使用Google云存储api上传一些文件。我在使用上传请求时遇到了sockethangup的一些错误。经过一番搜索,我遇到了Error:sockethangupcode:\'ECONNRESE 查看详情

将 Tus 可恢复文件上传协议与 Gin-Gonic CORS 问题集成

】将Tus可恢复文件上传协议与Gin-GonicCORS问题集成【英文标题】:IntegratingTusResumableFileUploadProtocolwithGin-GonicCORSissue【发布时间】:2021-01-0703:57:45【问题描述】:我在这里查看了与Gin和Tus的CORS问题相关的类似问题;没有解决我目前... 查看详情

上传的数据在云端的怎么查看,保存在啥位置?

...用户可登录天翼云Web端直接通过联系人来查看;2)相册:存储在我的图片/机型相册目录中;3)短信、应用和通话记录:存储在我的应用/手机备份/机型名称/备份目录中。备注:短信、应用和通话记录在云端的存储内容,无法直接... 查看详情

使用带有 Gmail API 的可恢复上传附加文件

】使用带有GmailAPI的可恢复上传附加文件【英文标题】:AttachingafileusingResumableuploadw/GmailAPI【发布时间】:2017-06-1108:59:23【问题描述】:我正在尝试使用Gmail的可恢复选项将附件上传到电子邮件。文档参考:https://developers.google.com/... 查看详情

gitpush上传代码到gitlab上,报错401或403

...码托管平台,采用ssh方式连接gitlab,在客户机上产生公钥上传到gitlab的SSH-Keys里,则gitclone下载和gitpush上传都没问题,这种方式很安全。后来应开发同事要求采用http方式连接gitlab,那么首先将project工程的“VisibilityLevel”改为“Pu... 查看详情

如何使用 Golang net/http 服务器接收上传的文件?

】如何使用Golangnet/http服务器接收上传的文件?【英文标题】:HowcanIreceiveanuploadedfileusingaGolangnet/httpserver?【发布时间】:2017-04-0217:32:54【问题描述】:我在玩Mux和net/http。最近,我正在尝试使用一个带有一个端点的简单服务器来... 查看详情

http常见状态码

HTTP400-请求无效HTTP401.1-未授权:登录失败HTTP401.2-未授权:服务器配置问题导致登录失败HTTP401.3-ACL禁止访问资源HTTP401.4-未授权:授权被筛选器拒绝HTTP401.5-未授权:ISAPI或CGI授权失败HTTP403-禁止访问HTTP403-对Internet服务管理器(HTML)的... 查看详情

上传golang版本sdk

...是不是因为我的callbackUrl(随便写的)写错导致的。上传golang版本SDK>>golang这个答案描述的挺清楚的:http://www.goodpm.net/postreply/golang/1010000008901091/上传golang版本SDK.html 查看详情

http状态码介绍

HTTP400–请求无效HTTP401.1–未授权:登录失败HTTP401.2–未授权:服务器配置问题导致登录失败HTTP401.3–ACL禁止访问资源HTTP401.4–未授权:授权被筛选器拒绝HTTP401.5–未授权:ISAPI或CGI授权失败HTTP403–禁止访问HTTP403–对Internet服务... 查看详情

如何使用谷歌应用引擎(java)上传和存储图像

】如何使用谷歌应用引擎(java)上传和存储图像【英文标题】:Howtouploadandstoreanimagewithgoogleappengine(java)【发布时间】:2010-12-0313:43:03【问题描述】:我正在寻找将图像(文件)上传和存储到GAE(java)的最简单方法。谷歌搜索了几... 查看详情