golang对阿里云oss的简单封装-上传-下载-查看

/ golang / 没有评论 / 317浏览

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
			}
		}
	}
}