package
0.0.0-20151029124810-2127a14b79b3
Repository: https://github.com/lupino/oss-go-sdk.git
Documentation: pkg.go.dev
# README
How to upload a large file to OSS
In this tutorial you will use the io.LimitReader
to spilt a large file,
and use oss.MultipartUpload.UploadPart
to upload a file.
First read getting start
Prepare
Get a large file, or create one, and rename to test.bin
wget -O test.bin http://speedtest.tokyo.linode.com/100MB-tokyo.bin
Split the large file
simple use io.LimitReader
to split a large file
var err error
var fp *os.File
var bufSize = int64(1024 * 1024 * 2) // 2 M
var rd = io.LimitReader(fp, bufSize)
upload the large file
Initial multipart upload with bucket ossgosdklargefile
or the bucket you want.
var bucket = "ossgosdklargefile"
var object = "largefile.bin"
var multi *oss.MultipartUpload
if multi, err = OSSAPI.NewMultipartUpload(bucket, object, nil); err != nil {
var e = oss.ParseError(err)
log.Printf("Code: %s\nMessage: %s\n", e.Code, e.Message)
}
use multi.UploadPart
to upload the file part
var etag string
if etag, err = multi.UploadPart(partNumber, rd); err != nil {
var e = oss.ParseError(err)
log.Printf("Code: %s\nMessage: %s\n", e.Code, e.Message)
}
Once part upload complete, complete upload use multi.CompleteUpload
tell the OSS the multipart upload is complete, OSS will merge the large file.
var parts = []oss.Part{
Part{
PartNumber: partNumber,
ETag: etag,
},
...
}
var result oss.CompleteMultipartUploadResult
if err = multi.CompleteUpload(parts, &result); err != nil {
var e = oss.ParseError(err)
log.Printf("Code: %s\nMessage: %s\n", e.Code, e.Message)
}
The end
the source code main.go