路由

        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
}

最新文章

  1. 【系统架构】IT职业技能图谱(点开大图查看)
  2. Oracle ITL(Interested Transaction List)理解
  3. js数组特定位置元素置空,非null和undefined,实现echarts现状图效果;谷歌格式化压缩js代码
  4. Visual Studio CLR Profiler
  5. Mysql 小技巧
  6. 转: __asm__ __volatile__内嵌汇编用法简述
  7. 菜鸟学Linux命令:chmod命令和数字文件权限
  8. HDU4815
  9. CGAL Manual/tutorial_hello_world.html
  10. jdk8 JAVA_OPTS
  11. git远程提交失败
  12. WebGL 纹理颜色原理
  13. UEditor上传自定义文件夹
  14. 2017-9-8-WLW尝试
  15. VS统计项目代码行数
  16. python--第十四天总结(js)
  17. jQuery中json中关于带有html代码网页的处理
  18. Markdown 字体
  19. Opendaylight的Carbon(碳)版本安装
  20. jenkins+git+docker实验环境的搭建

热门文章

  1. SpringBoot 2.5.5整合轻量级的分布式日志标记追踪神器TLog
  2. 多态特征,instanceof关键字和abstract类
  3. 14.-F对象和Q对象
  4. 项目实战:在线报价采购系统(React +SpreadJS+Echarts)
  5. 题解 P4058 [Code+#1]木材
  6. Springboot结构梳理
  7. java学习之JSON
  8. Linux网络通信(线程池和线程池版本的服务器代码)
  9. 【翻译】Spring Security抛弃了WebSecurityConfigurerAdapter
  10. XTDrone和PX4学习期间问题记录(一)