@@ -7,18 +7,15 @@ package example
77
88import (
99 "context"
10- "crypto/sha256"
1110 "fmt"
1211 "io"
13- "io/ioutil"
14- "math/rand"
1512 "os"
1613 "path"
17- "time"
1814
1915 "github.com/oracle/oci-go-sdk/common"
2016 "github.com/oracle/oci-go-sdk/example/helpers"
2117 "github.com/oracle/oci-go-sdk/objectstorage"
18+ "github.com/oracle/oci-go-sdk/objectstorage/transfer"
2219)
2320
2421// ExampleObjectStorage_UploadFile shows how to create a bucket and upload a file
@@ -34,7 +31,7 @@ func ExampleObjectStorage_UploadFile() {
3431 defer deleteBucket (ctx , c , namespace , bname )
3532
3633 contentlen := 1024 * 1000
37- filepath , filesize := writeTempFileOfSize (int64 (contentlen ))
34+ filepath , filesize := helpers . WriteTempFileOfSize (int64 (contentlen ))
3835 filename := path .Base (filepath )
3936 defer func () {
4037 os .Remove (filename )
@@ -56,6 +53,111 @@ func ExampleObjectStorage_UploadFile() {
5653 // delete bucket
5754}
5855
56+ func ExampleObjectStorage_UploadManager_UploadFile () {
57+ c , clerr := objectstorage .NewObjectStorageClientWithConfigurationProvider (common .DefaultConfigProvider ())
58+ helpers .FatalIfError (clerr )
59+
60+ ctx := context .Background ()
61+ bname := "bname"
62+ namespace := getNamespace (ctx , c )
63+
64+ createBucket (ctx , c , namespace , bname )
65+ defer deleteBucket (ctx , c , namespace , bname )
66+
67+ contentlen := 1024 * 1000 * 300 // 300MB
68+ filepath , _ := helpers .WriteTempFileOfSize (int64 (contentlen ))
69+ filename := path .Base (filepath )
70+ defer os .Remove (filename )
71+
72+ uploadManager := transfer .NewUploadManager ()
73+ objectName := "sampleFileUploadObj"
74+
75+ req := transfer.UploadFileRequest {
76+ UploadRequest : transfer.UploadRequest {
77+ NamespaceName : common .String (namespace ),
78+ BucketName : common .String (bname ),
79+ ObjectName : common .String (objectName ),
80+ //PartSize: common.Int(10000000),
81+ },
82+ FilePath : filepath ,
83+ }
84+
85+ // if you want to overwrite default value, you can do it
86+ // as: transfer.UploadRequest.AllowMultipartUploads = common.Bool(false) // default is true
87+ // or: transfer.UploadRequest.AllowParrallelUploads = common.Bool(false) // default is true
88+ resp , err := uploadManager .UploadFile (ctx , req )
89+
90+ if err != nil && resp .IsResumable () {
91+ resp , err = uploadManager .ResumeUploadFile (ctx , * resp .MultipartUploadResponse .UploadID )
92+ if err != nil {
93+ fmt .Println (resp )
94+ }
95+ }
96+
97+ defer deleteObject (ctx , c , namespace , bname , objectName )
98+ fmt .Println ("file uploaded" )
99+
100+ // Output:
101+ // get namespace
102+ // create bucket
103+ // file uploaded
104+ // delete object
105+ // delete bucket
106+ }
107+
108+ func ExampleObjectStorage_UploadManager_Stream () {
109+ c , clerr := objectstorage .NewObjectStorageClientWithConfigurationProvider (common .DefaultConfigProvider ())
110+ helpers .FatalIfError (clerr )
111+
112+ ctx := context .Background ()
113+ bname := "bname"
114+ namespace := getNamespace (ctx , c )
115+
116+ createBucket (ctx , c , namespace , bname )
117+ defer deleteBucket (ctx , c , namespace , bname )
118+
119+ contentlen := 1024 * 1000 * 130 // 130MB
120+ filepath , _ := helpers .WriteTempFileOfSize (int64 (contentlen ))
121+ filename := path .Base (filepath )
122+ defer func () {
123+ os .Remove (filename )
124+ }()
125+
126+ uploadManager := transfer .NewUploadManager ()
127+ objectName := "sampleStreamUploadObj"
128+
129+ file , _ := os .Open (filepath )
130+ defer file .Close ()
131+
132+ req := transfer.UploadStreamRequest {
133+ UploadRequest : transfer.UploadRequest {
134+ NamespaceName : common .String (namespace ),
135+ BucketName : common .String (bname ),
136+ ObjectName : common .String (objectName ),
137+ },
138+ StreamReader : file , // any struct implements the io.Reader interface
139+ }
140+
141+ // if you want to overwrite default value, you can do it
142+ // as: transfer.UploadRequest.AllowMultipartUploads = common.Bool(false) // default is true
143+ // or: transfer.UploadRequest.AllowParrallelUploads = common.Bool(false) // default is true
144+ _ , err := uploadManager .UploadStream (context .Background (), req )
145+
146+ if err != nil {
147+ fmt .Println (err )
148+ }
149+
150+ defer deleteObject (ctx , c , namespace , bname , objectName )
151+ fmt .Println ("stream uploaded" )
152+
153+ // Output:
154+ // get namespace
155+ // create bucket
156+ // stream uploaded
157+ // delete object
158+ // delete bucket
159+ }
160+
59161func getNamespace (ctx context.Context , c objectstorage.ObjectStorageClient ) string {
60162 request := objectstorage.GetNamespaceRequest {}
61163 r , err := c .GetNamespace (ctx , request )
@@ -115,15 +217,3 @@ func deleteBucket(ctx context.Context, c objectstorage.ObjectStorageClient, name
115217 fmt .Println ("delete bucket" )
116218 return
117219}
118-
119- func writeTempFileOfSize (filesize int64 ) (fileName string , fileSize int64 ) {
120- hash := sha256 .New ()
121- f , _ := ioutil .TempFile ("" , "OCIGOSDKSampleFile" )
122- ra := rand .New (rand .NewSource (time .Now ().UnixNano ()))
123- defer f .Close ()
124- writer := io .MultiWriter (f , hash )
125- written , _ := io .CopyN (writer , ra , filesize )
126- fileName = f .Name ()
127- fileSize = written
128- return
129- }
0 commit comments