demo
code
需要配置4个参数,默认下载地址为 bucketName+Endpoint/xxx.txt,如果配置了自定义域名,需要修改代码,单独配置下载地址
var Endpoint = "oss-cn-shanghai.aliyuncs.com"
var AccessKeyId = "XXXX"
var AccessKeySecret = "XXXX"
bucketName := "XXXX"
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
var Endpoint = "oss-cn-shanghai.aliyuncs.com"
var AccessKeyId = "XXX"
var AccessKeySecret = "XXX"
bucketName := "XXX"
var action = os.Args[1]
client, err := oss.New(Endpoint, AccessKeyId, AccessKeySecret)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
////创建存储空间。
// err = client.CreateBucket(bucketName)
//if err != nil {
// fmt.Println("Error:", err)
// os.Exit(-1)
//}
// 获取存储空间。
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 分片大小100K,3个协程并发上传分片,使用断点续传。
// 其中"<yourObjectName>"为objectKey, "LocalFile"为filePath,100*1024为partSize。
// 上传文件
if action == "upload"{
var ossfile = os.Args[2]
var localfile = os.Args[3]
fmt.Println("正在上传...")
err = bucket.UploadFile(ossfile,localfile, 1000*1024, oss.Routines(10), oss.Checkpoint(true, ""))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("上传完成,下载地址-->: "+bucketName+Endpoint+"/"+ossfile)
}
if action == "download"{
var ossfile = os.Args[2] // 全路径
var localfile = os.Args[3]
// 下载文件。
fmt.Println("正在下载...")
err = bucket.GetObjectToFile(ossfile, localfile)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("下载完成...下载文件位置-->: ",localfile)
}
// 列举文件
if action == "list-file"{
// 列举文件。
marker := oss.Marker("")
var DirPath = os.Args[2]
prefix := oss.Prefix(DirPath)
for {
lor, err := bucket.ListObjects(marker, prefix)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
for _, object := range lor.Objects {
fmt.Printf("%s %d %s\n", object.LastModified, object.Size, object.Key)
}
prefix = oss.Prefix(lor.Prefix)
marker = oss.Marker(lor.NextMarker)
if !lor.IsTruncated {
break
}
}
}
}