MCPcopy Index your code
hub / github.com/TruthHun/BookStack / ChangeAvatar

Method ChangeAvatar

controllers/api/LoginedController.go:94–148  ·  view source on GitHub ↗

更换头像

()

Source from the content-addressed store, hash-verified

92
93// 更换头像
94func (this *LoginedController) ChangeAvatar() {
95 _, fh, err := this.GetFile("avatar")
96 if err != nil {
97 beego.Error(err.Error())
98 this.Response(http.StatusBadRequest, messageBadRequest)
99 }
100 ext := strings.ToLower(filepath.Ext(fh.Filename))
101 extMap := map[string]bool{".jpg": true, ".png": true, ".gif": true, ".jpeg": true}
102 if _, ok := extMap[ext]; !ok {
103 this.Response(http.StatusBadRequest, "图片格式不正确")
104 }
105 uid := this.isLogin()
106 now := time.Now()
107 tmp := fmt.Sprintf("uploads/%v-%v%v", now.Format("2006/01"), now.Unix(), ext)
108 os.MkdirAll(filepath.Dir(tmp), os.ModePerm)
109 defer os.Remove(tmp)
110 save := fmt.Sprintf("uploads/%v/%v-%v%v", now.Format("2006/01"), uid, now.Unix(), ext)
111 os.MkdirAll(filepath.Dir(save), os.ModePerm)
112 err = this.SaveToFile("avatar", tmp)
113 if err != nil {
114 beego.Error(err.Error())
115 this.Response(http.StatusInternalServerError, messageInternalServerError)
116 }
117
118 member, err := models.NewMember().Find(uid)
119 if err != nil {
120 beego.Error(err.Error())
121 this.Response(http.StatusInternalServerError, messageInternalServerError)
122 }
123 avatar := strings.TrimLeft(member.Avatar, "./")
124 member.Avatar = "/" + save
125
126 switch utils.StoreType {
127 case utils.StoreOss: //oss存储
128 err = store.ModelStoreOss.MoveToOss(tmp, strings.TrimLeft(save, "./"), true, false)
129 if err != nil {
130 beego.Error(err.Error())
131 } else {
132 store.ModelStoreOss.DelFromOss(avatar)
133 }
134 case utils.StoreLocal: //本地存储
135 err = store.ModelStoreLocal.MoveToStore(tmp, save)
136 if err != nil {
137 beego.Error(err.Error())
138 } else {
139 os.Remove(avatar)
140 }
141 }
142
143 if err = member.Update(); err != nil {
144 beego.Error(err.Error())
145 this.Response(http.StatusInternalServerError, messageInternalServerError)
146 }
147 this.Response(http.StatusOK, messageSuccess, map[string]string{"avatar": this.completeLink(save)})
148}
149
150func (this *LoginedController) PostComment() {
151 content := this.GetString("content")

Callers

nothing calls this directly

Calls 9

NewMemberFunction · 0.92
ResponseMethod · 0.80
isLoginMethod · 0.80
MoveToOssMethod · 0.80
DelFromOssMethod · 0.80
MoveToStoreMethod · 0.80
completeLinkMethod · 0.80
FindMethod · 0.45
UpdateMethod · 0.45

Tested by

no test coverage detected