Beego框架实现文件上传+七牛云存储
一、下载
在go.mod中引入
github.com/qiniu/api.v7/v7 v7.8.2
控制器中引入
"github.com/qiniu/api.v7/v7/auth/qbox" "github.com/qiniu/api.v7/v7/storage"
使用这个会出现一个警告
但是不会影响上传
二、使用步骤(刚开始学习go,所有是先将图片保存到本地,然后再进行上传)
1.保存到本地
fileSuffix := ".png" rand.Seed(time.Now().UnixNano()) randNum := fmt.Sprintf("%d", rand.Intn(9999)+1000) hashName := md5.Sum([]byte(time.Now().Format("2006_01_02_15_04_05_") + randNum)) fileName := fmt.Sprintf("%x", hashName) + fileSuffix imageUrl := "static/img/" + fileName err := u.SaveToFile("image", imageUrl) if err != nil { u.Ctx.WriteString(fmt.Sprintf("%v", err)) return } u.Ctx.WriteString("上传本地成功~!!!!!!!") u.Ctx.WriteString(imageUrl)
保存本地的位置是static/img,如果没有请先创建。
2.云存储(这里查看了七牛云的手册)
代码如下:
bucket, _ := beego.AppConfig.String("bucket") putPolicy := storage.PutPolicy{ Scope: bucket, } accessKey, _ := beego.AppConfig.String("accessKey") secretKey, _ := beego.AppConfig.String("secretKey") mac := qbox.NewMac(accessKey, secretKey) upToken := putPolicy.UploadToken(mac) cfg := storage.Config{} // 空间对应的机房 cfg.Zone = &storage.ZoneHuadong // 是否使用https域名 cfg.UseHTTPS = true // 上传是否使用CDN上传加速 cfg.UseCdnDomains = true // 构建表单上传的对象 formUploader := storage.NewFormUploader(&cfg) ret := storage.PutRet{} // 可选配置 putExtra := storage.PutExtra{ Params: map[string]string{ "x:name": "github logo", }, } localFile := imageUrl //imageUrl:static/img/7bc0954e8edfc48895e7c33c280a66d3.png key := "shopping/userinfo/" + fileName //存储后的文件位置,shopping文件夹 userinfo文件夹 filename文件名称 err = formUploader.PutFile(context.Background(), &ret, upToken, key, localFile, &putExtra) if err != nil { fmt.Println(err) return } u.Ctx.WriteString("云存储成功")
key:表示的是图片上传到空间后存储的位置
localFile:表示的是要上传的文件地址
这里“构建表单上传的对象”不是很了解,后续再进行补充。
后续有更好的方法还会进行补充,希望大佬们能够指点!