使用包文件写入云存储?

时间:2014-03-12 12:37:20

标签: go

Golang提供file package访问云端存储。

包的Create函数需要io.WriteCloser接口。但是,我没有找到单个示例或文档,说明如何将文件实际保存到云存储。

有人可以帮忙吗?是否有更高级别的io.WriteCloser实现,允许我们将文件存储在云存储中?任何示例代码?

我们显然已经尝试过自己谷歌,但一无所获,现在希望社区能够提供帮助。

1 个答案:

答案 0 :(得分:2)

这可能是正确的,但行为在文档中没有明确定义。

如果您查看代码:https://code.google.com/p/appengine-go/source/browse/appengine/file/write.go#133

在每次调用Write中,数据都被发送到云端(第139行)。所以你不需要保存。 (您应该在完成后关闭文件。)

无论如何,我对你的措辞感到困惑:"包的创建功能需要io.WriteCloser界面。"那不是真的。包的创建函数返回一个 io.WriteCloser,也就是说,你可以写入和关闭它。

yourFile, _, err := Create(ctx, "filename", nil)
// Check err != nil here.

defer func() {
    err := yourFile.Close()
    // Check err != nil here.
}()

yourFile.Write([]byte("This will be sent to the file immediately."))
fmt.Fprintln(yourFile, "This too.")
io.Copy(yourFile, someReader)

这就是接口在Go中的工作方式。他们只是为您提供了一组您可以调用的方法,隐藏了您的实际实现;而且,当您只依赖于特定界面而不是特定实现时,您可以通过多种方式进行组合,如fmt.Fprintlnio.Copy