/
upload.go
81 lines (62 loc) · 1.53 KB
/
upload.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package components
import (
"encoding/base64"
"errors"
"github.com/clakeboy/golib/utils"
"io/ioutil"
"os"
"path/filepath"
"strings"
"time"
)
type Upload struct {
}
func NewUpload() *Upload {
return &Upload{}
}
var ImageMime = map[string]string{
"image/jpeg": "jpg",
"image/jpg": "jpg",
"image/png": "png",
}
const saveDir = "./assets/ig/"
const httpSaveDir = "/assets/ig/"
const tmpDir = "./cache/ig/"
const httpTmpDir = "/assets/tmp/"
func (*Upload) ImageBase64(base64_str string) string {
img_type := base64_str[5:strings.Index(base64_str, ";")]
if ImageMime[img_type] == "" {
panic(errors.New("can not support this mime"))
}
img_str := base64_str[strings.Index(base64_str, ",")+1:]
img, base64_err := base64.StdEncoding.DecodeString(img_str)
if base64_err != nil {
panic(base64_err)
}
file_date := utils.FormatTime("YYMMDD", time.Now().Unix())
file_name := file_date + "_" + utils.RandStr(10, nil) + "." + ImageMime[img_type]
err := os.MkdirAll(tmpDir, 0755)
if err != nil {
panic(err)
}
err = ioutil.WriteFile(tmpDir+file_name, img, 0755)
if err != nil {
panic(err)
}
return httpTmpDir + file_name
}
func (*Upload) MoveTmpToSave(tmp_file string) string {
file_name := filepath.Base(tmp_file)
list := strings.Split(file_name, "_")
err := os.MkdirAll(saveDir+list[0], 0755)
if err != nil {
panic(err)
}
old_file := tmpDir + file_name
new_file := saveDir + list[0] + "/" + list[1]
err = os.Rename(old_file, new_file)
if err != nil {
panic(err)
}
return httpSaveDir + list[0] + "/" + list[1]
}