Golang提供file package访问云端存储。
包的Create函数需要io.WriteCloser接口。但是,我没有找到单个示例或文档,说明如何将文件实际保存到云存储。
有人可以帮忙吗?是否有更高级别的io.WriteCloser实现,允许我们将文件存储在云存储中?任何示例代码?
我们显然已经尝试过自己谷歌,但一无所获,现在希望社区能够提供帮助。
答案 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.Fprintln
和io.Copy
。