一、上传文件到阿里云OSS
1、前提
我们需要将文件上传到本地的服务器内文章来源地址https://www.toymoban.com/news/detail-690912.html
2、OSS代码实现
package common
import (
"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_ID
accessKeySecret := 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_ID
accessKeySecret := 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 := 0
for {
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
}
}
文章来源:https://www.toymoban.com/news/detail-690912.html
到了这里,关于【阿里云OSS】golang实现 添加文件到OSS | OSS批量删除bucket下指定的文件夹以及内部的文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!