0
点赞
收藏
分享

微信扫一扫

Go+beego接入OSS上传

Ewall_熊猫 2023-01-27 阅读 91

路由

f, h, err := c.GetFile("uploadFile")
if err != nil {
logx.Error("getfile err ", err)
rq.ThrowErrorMessage("未找到文件")
return
}

//存到服务器的地址
filePath := "static/upload/" + h.Filename
defer func() {
f.Close()
os.Remove(filePath)
}()

// 保存位置在 static/upload, 没有文件夹要先创建
c.SaveToFile("uploadFile", filePath)

res, err := aliclound.UploadAvatar(filePath)
if err != nil {
rq.ThrowErrorMessage("上传失败-1,请联系小客服")
return
}

//写表
log := models.TImage{
PosterId: int(rq.UserId),
PostTime: time.Now(),
FileName: res,
Type: "user_avatar",
}
_, err = core.DB().Insert(log)
if err != nil {
logx.Error("插入头像失败:" + err.Error())
rq.ThrowErrorMessage("上传失败-2,请联系小客服")
return
}

传到oss

需要的库:"github.com/aliyun/aliyun-oss-go-sdk/oss"

const (
Object_Avatar = "prod/image/"
)

func UploadAvatar(filePath string) (string, error) {
return upload(Object_Avatar, filePath)
}

func upload(objectName string, filePath string) (fileName string, err error) {
// 创建OSSClient实例。
// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
client, err := oss.New("", "", "")
if err != nil {
fmt.Println("aliclound:upload:Error1:", err)
return fileName, err
}

bucketName := "test"
if core.CheckServerMode() {
bucketName = "server"
}

// 填写存储空间名称,例如examplebucket。
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("aliclound:upload:Error2:", err)
return fileName, err
}

//随机文件名
fileName = convert.GetDay() + "-" + util.UUID()

// 依次填写Object的完整路径(例如exampledir/exampleobject.txt)
// 本地文件的完整路径(服务器上存图片的路径)。
err = bucket.PutObjectFromFile(objectName+fileName, filePath)
if err != nil {
fmt.Println("aliclound:upload:Error3:", err)
return fileName, err
}
return fileName, err
}

当你停下来休息的时候,不要忘记别人还在奔跑!



举报

相关推荐

0 条评论