文章目录
1. 获取配置信息
2. config
3. upload
完整代码
这一章节中我们介绍如何把图片上传到七牛云,并且返回对应图片的 url 。因为后续我们的创建的商品,更换头像等等都是把我们的图片上传七牛云存储,再返回对应的url的。
1. 获取配置信息
打开七牛云官网,并进入控制台。
找到资源管理的存储空间
创建空间
新建存储空间
然后我们进入到这个页面,你可以选择绑定域名,也可以选择不绑定。如果不绑定七牛会送你一个体验的域名,好像是7天时效。
绑定域名就可以了
将你的域名绑定上就可以了。
如果没有域名的话,这里就有一个七牛送的域名
获取密钥
这两个都要
这样就行了
2. config
config.ini 文件 AccessKey=是上面AK SercetKey=是上面的SK Bucket=是刚刚新创的名称! QiniuServer=是绑定的域名
conf.go 文件
加载配置
func LoadQiniu(file *ini.File) { AccessKey = file.Section("qiniu").Key("AccessKey").String() SerectKey = file.Section("qiniu").Key("SerectKey").String() Bucket = file.Section("qiniu").Key("Bucket").String() QiniuServer = file.Section("qiniu").Key("QiniuServer").String() }
3. upload
在pkg包下的utils下创建upload.go文件
读取配置文件
var AccessKey = conf.AccessKey var SerectKey = conf.SerectKey var Bucket = conf.Bucket var ImgUrl = conf.QiniuServer putPlicy := storage.PutPolicy{ Scope:Bucket, }
上传七牛云并返回url和状态
mac := qbox.NewMac(AccessKey,SerectKey) upToken := putPlicy.UploadToken(mac) cfg := storage.Config{ Zone : &storage.ZoneHuanan, UseCdnDomains : false, UseHTTPS : false, } putExtra := storage.PutExtra{} formUploader := storage.NewFormUploader(&cfg) ret := storage.PutRet{} err := formUploader.PutWithoutKey(context.Background(),&ret,upToken,file,fileSize,&putExtra) if err != nil { code := e.ErrorUploadFile return code , err.Error() } url := ImgUrl + ret.Key return 200,url
完整代码
传入文件,以及文件大小,返回的是url和状态
package util import ( "context" "github.com/qiniu/go-sdk/v7/auth/qbox" "github.com/qiniu/go-sdk/v7/storage" "mall/conf" "mall/pkg/e" "mime/multipart" ) // 封装上传图片到七牛云然后返回状态和图片的url func UploadToQiNiu(file multipart.File ,fileSize int64) (int,string) { var AccessKey = conf.AccessKey var SerectKey = conf.SerectKey var Bucket = conf.Bucket var ImgUrl = conf.QiniuServer putPlicy := storage.PutPolicy{ Scope:Bucket, } mac := qbox.NewMac(AccessKey,SerectKey) upToken := putPlicy.UploadToken(mac) cfg := storage.Config{ Zone : &storage.ZoneHuanan, UseCdnDomains : false, UseHTTPS : false, } putExtra := storage.PutExtra{} formUploader := storage.NewFormUploader(&cfg) ret := storage.PutRet{} err := formUploader.PutWithoutKey(context.Background(),&ret,upToken,file,fileSize,&putExtra) if err != nil { code := e.ErrorUploadFile return code , err.Error() } url := ImgUrl + ret.Key return 200,url }