Go+beego接入OSS上传
2024-09-08 18:18:19
路由
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
}
最新文章
- 【系统架构】IT职业技能图谱(点开大图查看)
- Oracle ITL(Interested Transaction List)理解
- js数组特定位置元素置空,非null和undefined,实现echarts现状图效果;谷歌格式化压缩js代码
- Visual Studio CLR Profiler
- Mysql 小技巧
- 转: __asm__ __volatile__内嵌汇编用法简述
- 菜鸟学Linux命令:chmod命令和数字文件权限
- HDU4815
- CGAL Manual/tutorial_hello_world.html
- jdk8 JAVA_OPTS
- git远程提交失败
- WebGL 纹理颜色原理
- UEditor上传自定义文件夹
- 2017-9-8-WLW尝试
- VS统计项目代码行数
- python--第十四天总结(js)
- jQuery中json中关于带有html代码网页的处理
- Markdown 字体
- Opendaylight的Carbon(碳)版本安装
- jenkins+git+docker实验环境的搭建
热门文章
- SpringBoot 2.5.5整合轻量级的分布式日志标记追踪神器TLog
- 多态特征,instanceof关键字和abstract类
- 14.-F对象和Q对象
- 项目实战:在线报价采购系统(React +SpreadJS+Echarts)
- 题解 P4058 [Code+#1]木材
- Springboot结构梳理
- java学习之JSON
- Linux网络通信(线程池和线程池版本的服务器代码)
- 【翻译】Spring Security抛弃了WebSecurityConfigurerAdapter
- XTDrone和PX4学习期间问题记录(一)