上传函数
import (
"io"
"Festival/app/common/cfg"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func OssUpload(key string, file io.Reader) (string, error) {
ossCfg := cfg.Instance().Oss
client, err := oss.New(ossCfg.Endpoint, ossCfg.AccessKeyId, ossCfg.AccessKeySecret)
if err != nil {
return "", err
}
// 获取存储空间。
bucket, err := client.Bucket(ossCfg.BucketName)
if err != nil {
return "", err
}
// 上传文件。
err = bucket.PutObject(key, file)
if err != nil {
return "", err
}
// https://jxcatimg.oss-cn-shenzhen.aliyuncs.com/articles/202107/1626401559-1564453109_219427.jpg
return ossCfg.Bucketpoint + "/" + key, nil
}
上传
import (
"app/common/utils/oss"
"fmt"
"github.com/gin-gonic/gin"
"os"
"path/filepath"
"time"
)
func OSSUploadFile(c *gin.Context) {
fileHeader, err := c.FormFile("file")
if err != nil {
response.ErrorResp(c).SetMsg("参数有误").ToJson()
return
}
fileExt := filepath.Ext(fileHeader.Filename)
allowExts := []string {".jpg", ".png", ".gif", ".jpeg", ".doc", ".docx", ".ppt", ".pptx", ".xls", ".xlsx", ".pdf"}
allowFlag := false
for _, ext := range allowExts {
if ext == fileExt {
allowFlag = true
break
}
}
if (!allowFlag) {
response.ErrorResp(c).SetMsg("不允许的类型").ToJson()
return
}
now := time.Now()
//文件存放路径
fileDir := fmt.Sprintf("articles/%s", now.Format("200601"))
//文件名称
timeStamp := now.Unix()
fileName := fmt.Sprintf("%d-%s", timeStamp, fileHeader.Filename)
// 文件key
fileKey := filepath.Join(fileDir, fileName)
src, err := fileHeader.Open()
if err != nil {
response.ErrorResp(c).SetMsg("上传失败").ToJson()
return
}
defer src.Close()
res, err := oss.OssUpload(fileKey, src)
if err != nil {
response.ErrorResp(c).SetMsg("上传失败").ToJson()
return
}
response.SucessResp(c).SetData(request.UploadFile{Title: fileName, Src: res}).ToJson()
}