注册账号并选择免费活动 选择云存储
新建存储空间,建议华东华南华北任选一个,访问控制选择公有,否则后边显示不出图片
空间创建成功会自动为你分配一个测试域名,个人项目没有域名的话可以直接使用测试域名即可
获取密钥
点击右上角,秘钥管理,可以看到AK,SK后面项目会使用
2. 实现头像上传main.go 添加 r1.POST("user/avatar", controller.PostAvatar)
ihome/model/modelFunc.go 中添加函数 UpdataAvatar
func UpdateAvatar(userName, avatar string) error {
return GlobalConn.Model(new(User)).Where("name = ?", userName).Update("avatar_url", avatar).Error
}
ihome/controller/user.go 添加函数PostAvatar
func PostAvatar(ctx *gin.Context) {
file, _ := ctx.FormFile(("avatar"))
fileSize := file.Size
f, _ := file.Open()
buf := make([]byte, file.Size)
f.Read(buf)
var AccessKey = "Your AK"
var SerectKey = "Your SK"
var Bucket = "Your Space name" // 前边创建的空间名称
var ImgUrl = "Your url" // 前边给的测试域名
putPlicy := storage.PutPolicy{
Scope: Bucket,
}
mac := qbox.NewMac(AccessKey, SerectKey)
upToken := putPlicy.UploadToken(mac)
cfg := storage.Config{
Zone: &storage.ZoneHuadong, // 这里选择你的空间所在 华南华北华东等
UseCdnDomains: false,
UseHTTPS: false,
}
putExtra := storage.PutExtra{}
formUploader := storage.NewFormUploader(&cfg)
ret := storage.PutRet{}
reader := bytes.NewReader(buf)
err := formUploader.PutWithoutKey(context.Background(), &ret, upToken, reader, fileSize, &putExtra)
if err != nil {
fmt.Println("formUploader.PutWithoutKey err: ", err)
}
url := ImgUrl + ret.Key
// fmt.Println(url)
userName := sessions.Default(ctx).Get("username")
model.UpdateAvatar(userName.(string), url)
resp := make(map[string]interface{})
resp["errno"] = utils.RECODE_OK
resp["errmsg"] = utils.RecodeText(utils.RECODE_OK)
temp := make(map[string]interface{})
temp["avatar_url"] = url
resp["data"] = temp
ctx.JSON(http.StatusOK, resp)
}
测试
1. 点击修改 -> 上传文件 -> 选择一张图片确定
2. 进入数据库可以发现新增文件
项目之后内容基本可以参考前边模块,因此项目到此基本可以结束。@。@
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)