七. IHOME (GoWeb项目 上传用户头像并保存在七牛云)

七. IHOME (GoWeb项目 上传用户头像并保存在七牛云),第1张

1. 注册并配置七牛云

注册账号并选择免费活动 选择云存储

新建存储空间,建议华东华南华北任选一个,访问控制选择公有,否则后边显示不出图片

空间创建成功会自动为你分配一个测试域名,个人项目没有域名的话可以直接使用测试域名即可

 获取密钥

点击右上角,秘钥管理,可以看到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. 进入数据库可以发现新增文件

项目之后内容基本可以参考前边模块,因此项目到此基本可以结束。@。@

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存