duanqiao1926 2018-08-08 19:44
浏览 141
已采纳

在Golang中使用Google Cloud Platform中的存储桶

I'm trying to host a Go app on the Google Cloud Platform and I need it to do some file writing. GCP doesn't let you do file writing directly in the App Engine, but requires you to use a Bucket.

From their documentation, you can access the buckets in PHP like so

$default_bucket = CloudStorageTools::getDefaultGoogleStorageBucketName();
$fp = fopen("gs://${default_bucket}/hello_default_stream.txt", 'w');
fwrite($fp, $newFileContent);
fclose($fp);

Is there a Golang equivalent for this?

  • 写回答

1条回答 默认 最新

  • doujumiao5024 2018-08-09 13:47
    关注

    As shared by Daz on the first comment, there's an intro on how to do this on the docs for Standard. This uses the cloud.google.com/go/storage library, although you could also use the superseded google.golang.org/appengine/blobstore (as also explained in the docs).

    With those docs, you could simplify them until you get the following code (tested it and works as expected):

    package minimal_gcs
    
    import (
            s "cloud.google.com/go/storage"
            a "google.golang.org/appengine"
            h "net/http"
    )
    
    func init() {
            h.HandleFunc("/", func(w h.ResponseWriter, r *h.Request) {
                    cx := a.NewContext(r)
                    c, _ := s.NewClient(cx)
                    wr := c.Bucket("<bucket_id>").Object("<object_id>").NewWriter(cx)
                    _, _ = wr.Write([]byte("Hello World!!1"))
                    _ = wr.Close()
            })
    }
    

    Note that this is really bad code (no error handling, ...), but I think it's useful to show the basic steps to handle GCS files within GAE standard using Go.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵