Skip to content

Commit ee97b69

Browse files
Generate newAvatar from the avatar file
Signed-off-by: Masudur Rahman <[email protected]>
1 parent 717add4 commit ee97b69

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

models/migrations/v115.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ package migrations
77
import (
88
"crypto/md5"
99
"fmt"
10-
"io"
10+
"io/ioutil"
1111
"os"
1212
"path/filepath"
1313

@@ -46,7 +46,7 @@ func renameExistingUserAvatarName(x *xorm.Engine) error {
4646

4747
for _, user := range users {
4848
oldAvatar := user.Avatar
49-
newAvatar := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%d-%s", user.ID, user.Avatar))))
49+
5050
if _, err := os.Stat(filepath.Join(setting.AvatarUploadPath, oldAvatar)); err != nil {
5151
log.Warn("[user: %s] os.Stat: %v", user.LowerName, err)
5252
// avatar doesn't exist in the storage
@@ -55,7 +55,8 @@ func renameExistingUserAvatarName(x *xorm.Engine) error {
5555
continue
5656
}
5757

58-
if err := copyAvatar(oldAvatar, newAvatar); err != nil {
58+
newAvatar, err := copyOldAvatarToNewLocation(user.ID, oldAvatar)
59+
if err != nil {
5960
_ = sess.Rollback()
6061
return fmt.Errorf("[user: %s] %v", user.LowerName, err)
6162
}
@@ -82,21 +83,25 @@ func renameExistingUserAvatarName(x *xorm.Engine) error {
8283
return nil
8384
}
8485

85-
func copyAvatar(oldAvatar, newAvatar string) error {
86+
// copyOldAvatarToNewLocation copies oldAvatar to newAvatarLocation
87+
// and returns newAvatar location
88+
func copyOldAvatarToNewLocation(userID int64, oldAvatar string) (string, error) {
8689
fr, err := os.Open(filepath.Join(setting.AvatarUploadPath, oldAvatar))
8790
if err != nil {
88-
return fmt.Errorf("os.Open: %v", err)
91+
return "", fmt.Errorf("os.Open: %v", err)
8992
}
9093
defer fr.Close()
9194

92-
fw, err := os.Create(filepath.Join(setting.AvatarUploadPath, newAvatar))
95+
data, err := ioutil.ReadAll(fr)
9396
if err != nil {
94-
return fmt.Errorf("os.Create: %v", err)
97+
return "", fmt.Errorf("ioutil.ReadAll: %v", err)
9598
}
96-
defer fw.Close()
9799

98-
if _, err := io.Copy(fw, fr); err != nil {
99-
return fmt.Errorf("io.Copy: %v", err)
100+
newAvatar := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%d-%x", userID, md5.Sum(data)))))
101+
102+
if err := ioutil.WriteFile(filepath.Join(setting.AvatarUploadPath, newAvatar), data, 0666); err != nil {
103+
return "", fmt.Errorf("ioutil.WriteFile: %v", err)
100104
}
101-
return nil
105+
106+
return newAvatar, nil
102107
}

0 commit comments

Comments
 (0)