更换头像
()
| 92 | |
| 93 | // 更换头像 |
| 94 | func (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 | |
| 150 | func (this *LoginedController) PostComment() { |
| 151 | content := this.GetString("content") |
nothing calls this directly
no test coverage detected