我正在开发一个项目,我需要使用Golang在Google云端存储上启用存储桶版本控制。更具体一点:
注意:我已经用Google搜索并浏览了Google Cloud Platform的文档,并找到了仅使用Java进行版本控制的代码示例。我甚至已经探索过这个软件包" cloud.google.com/go/storage"了解代码但没有帮助。
我在我的代码中使用下面的库和函数来更新存储桶:
import "cloud.google.com/go/storage"
func configureStorage(bucketID string) (*storage.BucketHandle, error) {
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
log.Printf("An error happened: %v", err)
return nil, err
}
return client.Bucket(bucketID), nil
}
func saveFileToStorage(bucketID string, fileName string, contentType string, file multipart.File) {
StorageBucket, err := configureStorage(bucketID)
if err != nil {
log.Fatal(err)
}
if StorageBucket == nil {
log.Printf("Storage Bucket is nil")
return
}
ctx := context.Background()
wr := StorageBucket.Object(fileName).NewWriter(ctx)
wr.ACL = []storage.ACLRule{{Entity: storage.AllUsers, Role: storage.RoleReader}}
wr.ContentType = contentType
// Entries are immutable, be aggressive about caching (1 day).
wr.CacheControl = "public, max-age=86400"
if _, err := io.Copy(wr, file); err != nil {
log.Fatal(err)
}
if err := wr.Close(); err != nil {
log.Fatal(err)
}
}
答案 0 :(得分:0)
您可以尝试通过GET得知是否启用了版本控制。
gsutil versioning get gs://bucket_name
可以在存储桶的版本控制中尝试使用此SET。
gsutil versioning set on gs://bucket_name
答案 1 :(得分:0)
这似乎可行:
client.Bucket("bucket").Update(ctx, storage.BucketAttrsToUpdate{VersioningEnabled: true})