一、上传文件到阿里云OSS
1、前提
我们需要将文件上传到本地的服务器内
2、OSS代码实现
package commonimport ("fmt""gitee.com/ctra/ctra-go-common.git/constant""github.com/aliyun/alibaba-cloud-sdk-go/services/sts""github.com/aliyun/aliyun-oss-go-sdk/oss""os"
)func UploadAliyunOSS(objectName string, localFileName string) error {// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。endpoint := constant.ALIYUN_ENDPOINT_OUTSIDE// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。accessKeyId := constant.ALIYUN_ACCESSKEY_IDaccessKeySecret := constant.ALIYUN_ACCESSKEY_SECRET// yourBucketName填写存储空间名称。bucketName := constant.ALIYUN_BUCKET_NAME// yourObjectName填写Object完整路径,完整路径不包含Bucket名称。//objectName := "yourObjectName"// yourLocalFileName填写本地文件的完整路径。//localFileName := "yourLocalFileName"// 创建OSSClient实例。client, err := oss.New(endpoint, accessKeyId, accessKeySecret)if err != nil {fmt.Println("Error:", err)os.Exit(-1)return err}// 获取存储空间。bucket, err := client.Bucket(bucketName)if err != nil {fmt.Println("Error:", err)os.Exit(-1)return err}// 上传文件。err = bucket.PutObjectFromFile(objectName, localFileName)if err != nil {fmt.Println("Error:", err)os.Exit(-1)return err}return nil
}fmt.Printf("success,total delete object count:%d\n", count)return nil
}
二、清空阿里云OSS指定bucket下
1、代码实现
func DelAliyunOSSBucketFolder(folderName string) error {// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。endpoint := constant.ALIYUN_ENDPOINT_OUTSIDE// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。accessKeyId := constant.ALIYUN_ACCESSKEY_IDaccessKeySecret := constant.ALIYUN_ACCESSKEY_SECRET// yourBucketName填写存储空间名称。bucketName := constant.ALIYUN_BUCKET_NAME// yourObjectName填写Object完整路径,完整路径不包含Bucket名称。//objectName := "yourObjectName"// yourLocalFileName填写本地文件的完整路径。//localFileName := "yourLocalFileName"// 创建OSSClient实例。fmt.Println("-------------创建OSSClient实例")client, err := oss.New(endpoint, accessKeyId, accessKeySecret)if err != nil {fmt.Println("Error:", err)os.Exit(-1)return err}// 获取 Bucket 实例bucket, err := client.Bucket(bucketName)if err != nil {fmt.Println("\"Error creating bucket instance:", err)os.Exit(-1)return err}// 删除指定文件夹//err = bucket.DeleteObject(folderName)//if err != nil {// fmt.Println("Error deleting folder:", err)// os.Exit(-1)// return err//}marker := oss.Marker("")// 填写待删除目录的完整路径,完整路径中不包含Bucket名称。prefix := oss.Prefix(folderName)count := 0for {lor, err := bucket.ListObjects(marker, prefix)if err != nil {fmt.Println("Error:", err)os.Exit(-1)}if len(lor.Objects) == 0 {break}objects := []string{}for _, object := range lor.Objects {objects = append(objects, object.Key)}// 删除目录及目录下的所有文件。// 将oss.DeleteObjectsQuiet设置为true,表示不返回删除结果。delRes, err := bucket.DeleteObjects(objects, oss.DeleteObjectsQuiet(true))if err != nil {fmt.Println("Error:", err)os.Exit(-1)}if len(delRes.DeletedObjects) > 0 {fmt.Println("these objects deleted failure,", delRes.DeletedObjects)os.Exit(-1)}count += len(objects)prefix = oss.Prefix(lor.Prefix)marker = oss.Marker(lor.NextMarker)if !lor.IsTruncated {break}}