使用 REST API 将文件直接上传到 Google 存储桶

使用 rest api 将文件直接上传到 google 存储桶

问题内容

按照 go 示例,我使用以下代码将文件上传到 google 存储桶:

func uploadFile(bucket string, uploadFilePath string, destFilePath string) error {    os.Setenv("GOOGLE_APPLICATION_CREDENTIALS", "./credential.json")    ctx := context.Background()    client, err := storage.NewClient(ctx)    if err != nil {        return fmt.Errorf("storage.NewClient: %v", err)    }    defer client.Close()    // Open local file.    f, err := os.Open(uploadFilePath)    if err != nil {        return fmt.Errorf("os.Open: %v", err)    }    defer f.Close()    ctx, cancel := context.WithTimeout(ctx, time.Second*50)    defer cancel()    o := client.Bucket(bucket).Object(destFilePath)    o = o.If(storage.Conditions{DoesNotExist: true})        // Upload an object with storage.Writer.    wc := o.NewWriter(ctx)    if _, err = io.Copy(wc, f); err != nil {        return fmt.Errorf("io.Copy: %v", err)    }    if err := wc.Close(); err != nil {        return fmt.Errorf("Writer.Close: %v", err)    }    return nil}func main() {    bucket := "g1-mybucket-001"    targetFilePath := "./somefile.txt"    destFilePath := "it_poc_test_folder/somefile.txt"    err := uploadFile(bucket, targetFilePath, destFilePath)    if err != nil {        fmt.Println(fmt.Errorf("Error uplolading file: %v", err))    } else {        fmt.Printf("%s uploaded to %s.", targetFilePath, destFilePath)    }}

登录后复制

现在我计划将其包装起来,创建一个用于文件上传的 rest api。然后我意识到该代码仅用于上传本地文件。如何包装它以便文件直接进入存储桶,而不需要先将其上传到服务器?

正确答案

有很多文件上传示例,要点是:

func uploadfile(w http.responsewriter, r *http.request) {    // ...     r.parsemultipartform(10 

因此,只需将文件上传的 f 主体传递到您的云上传逻辑,就好像它是本地文件一样:

// same code - different `f` source// Upload an object with storage.Writer.wc := o.NewWriter(ctx)if _, err = io.Copy(wc, f); err != nil {    return fmt.Errorf("io.Copy: %v", err)}

登录后复制

以上就是使用 REST API 将文件直接上传到 Google 存储桶的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2360479.html

(0)
上一篇 2025年3月1日 18:14:08
下一篇 2025年3月1日 18:14:35

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 电脑主板温度经常到达70度?

    电脑主板温度经常到达70度是一个常见的问题。php小编小新为您解答:高温可能会对电脑主板造成损害,因此应该采取一些措施来降低温度。首先,确保电脑周围有足够的通风空间,避免堵塞。其次,可以考虑清洁电脑内部,尤其是散热器和风扇。此外,可以安装风…

    2025年3月1日
    100
  • oppoa59s带框换屏幕总成?

    php小编小新为您介绍一种快速、方便的oppoa59s手机维修方法——带框换屏幕总成。oppoa59s手机是一款人气较高的手机型号,但在使用过程中,屏幕出现损坏是比较常见的问题。传统的更换屏幕方法需要拆解多个零部件,操作繁琐且易出错。而带框…

    2025年3月1日
    100
  • 如何自己组装台式电脑?

    你是否渴望打造属于自己的台式电脑,享受定制体验?php小编子墨为你精心准备了这份指南,深入解读组装台式电脑的每个步骤。从选择合适的零部件到一步步的组装过程,本指南将引导你解决组装过程中可能遇到的问题,助你顺利完成组装。准备好踏上这段 diy…

    2025年3月1日
    200
  • 组装个电脑要啥配件? 自己组装个电脑都需要买什么?

    想要亲手组装一台电脑却不知从何下手?别担心!想知道一台电脑需要哪些配件吗?php小编百草今天就为大家整理了一份全面的指南。从挑选主板、cpu、显卡到选择合适的机箱、电源供应器,本文将一步步指导您组装一台能满足您需求的电脑。赶快继续往下读,开…

    2025年3月1日
    200
  • 推荐组装电脑配置? 办公电脑组装电脑配置推荐?

    办公电脑组装推荐何种配置?相信很多朋友都遇到这样的问题。php小编西瓜今天给大家带来办公电脑组装电脑配置的推荐,希望能帮助大家解决这个问题。 推荐组装电脑配置? 一、入门办公电脑配置单 赛扬系列属于intel最入门的cpu型号,这套配置用的…

    2025年3月1日
    200
  • 电脑挂灯好评语? 电脑好评语30字?

    电脑挂灯或电脑产品评价中常遇到的难题是什么?如何找到恰到好处的评价语句来描述产品的优点和感受?php小编苹果为大家带来了电脑挂灯和电脑产品评价中的好评语大全,涵盖了30字以内的好评内容。文章将为您提供多种评价语句,引导您在撰写评论或推荐时轻…

    2025年3月1日
    200
  • 组装游戏电脑配置推荐?

    各位游戏爱好者,组装游戏电脑时配置选择困扰着你吗?php小编西瓜为大家带来了组装游戏电脑的配置推荐指南,涵盖了处理器、显卡、内存等关键组件的详细分析和推荐。以下内容将逐一引导大家了解如何根据自己的需求和预算,选择最适合的游戏电脑配置。 组装…

    2025年3月1日
    200
  • 5000电脑组装主机配置? 5000元预算电脑最强组装?

    许多电脑爱好者都想要组装一台性能强悍的电脑,但预算往往有限。对于5000元的预算,如何组装一台性能均衡、性价比高的主机让人头疼。本文由php小编柚子精心整理,为您提供5000元预算电脑的主机配置方案。从cpu到显卡,从内存到存储,我们将全面…

    2025年3月1日
    200
  • 联想台式电脑怎么组装?

    联想台式电脑组装方法繁琐,令不少用户望而生畏。php小编西瓜特此为大家带来详细指南,一步步解析联想台式电脑组装流程。本指南将涵盖从选择配件到完成组装的各个环节,帮助大家轻松组装一台性能强劲的联想台式电脑。 联想台式电脑怎么组装? 联想台式机…

    2025年3月1日
    200
  • 如何测试电脑是否组装机?

    想确认自己购买的电脑是否为组装机,却苦于没有有效的方法吗?php小编香蕉为您带来一则实用指南,详细介绍如何通过一系列简单步骤测试您的电脑是否是组装机。文中将逐一剖析各项关键指标,指导您清晰辨别电脑的组装属性。继续阅读本文,轻松掌握这门技术,…

    2025年3月1日
    200

发表回复

登录后才能评论