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.

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

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效