github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/sample/archive.go (about) 1 package sample 2 3 import ( 4 "fmt" 5 "strings" 6 "time" 7 8 "github.com/aliyun/aliyun-oss-go-sdk/oss" 9 ) 10 11 // ArchiveSample archives sample 12 func ArchiveSample() { 13 // Create archive bucket 14 client, err := oss.New(endpoint, accessID, accessKey) 15 if err != nil { 16 HandleError(err) 17 } 18 19 err = client.CreateBucket(bucketName, oss.StorageClass(oss.StorageArchive)) 20 if err != nil { 21 HandleError(err) 22 } 23 24 archiveBucket, err := client.Bucket(bucketName) 25 if err != nil { 26 HandleError(err) 27 } 28 29 // Put archive object 30 var val = "花间一壶酒,独酌无相亲。 举杯邀明月,对影成三人。" 31 err = archiveBucket.PutObject(objectKey, strings.NewReader(val)) 32 if err != nil { 33 HandleError(err) 34 } 35 36 // Check whether the object is archive class 37 meta, err := archiveBucket.GetObjectDetailedMeta(objectKey) 38 if err != nil { 39 HandleError(err) 40 } 41 42 if meta.Get("X-Oss-Storage-Class") == string(oss.StorageArchive) { 43 // Restore object 44 err = archiveBucket.RestoreObject(objectKey) 45 if err != nil { 46 HandleError(err) 47 } 48 49 // Wait for restore completed 50 meta, err = archiveBucket.GetObjectDetailedMeta(objectKey) 51 for meta.Get("X-Oss-Restore") == "ongoing-request=\"true\"" { 52 fmt.Println("x-oss-restore:" + meta.Get("X-Oss-Restore")) 53 time.Sleep(1000 * time.Second) 54 meta, err = archiveBucket.GetObjectDetailedMeta(objectKey) 55 } 56 } 57 58 // Get restored object 59 err = archiveBucket.GetObjectToFile(objectKey, localFile) 60 if err != nil { 61 HandleError(err) 62 } 63 64 // Restore repeatedly 65 err = archiveBucket.RestoreObject(objectKey) 66 67 // Delete object and bucket 68 err = DeleteTestBucketAndObject(bucketName) 69 if err != nil { 70 HandleError(err) 71 } 72 73 fmt.Println("ArchiveSample completed") 74 }