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
| package main
import ( "io" "log" "net/http" "os" )
var ( uploadFileKey = "file" filePath = "/data/repo/picpicgo/" )
func main() { http.HandleFunc("/", uploadHandler) if err := http.ListenAndServe(":12798", nil); err != nil { log.Fatalf("error to start http server:%s", err.Error()) } }
func uploadHandler(w http.ResponseWriter, r *http.Request) { file, header, err := r.FormFile(uploadFileKey) if err != nil { } log.Printf("selected file name is %s", header.Filename) authValue := r.Header.Get("Authorization") if (authValue != "Basic eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoxLCJsb2NhbGUiOiJlbiIsInZpZXdNb2RlIjoibW9zYWljIiwic2luZ2xlQ2xpY2siOmZhbHNlLCJwZXJtIjp7ImFkbWluIjp0cnVlLCJleGVjdXRlIjp0cnVlLCJjcmVhdGUiOnRydWUsInJlbmFtZSI6dHJ1ZSwibW9kaWZ5Ijp0cnVlLCJkZWxldGUiOnRydWUsInNoYXJlIjp0cnVlLCJkb3dubG9hZCI6dHJ1ZX0sImNvbW1hbmRzIjpbXSwibG9ja1Bhc3N3b3JkIjpmYWxzZSwiaGlkZURvdGZpbGVzIjpmYWxzZSwiZGF0ZUZvcm1hdCI6ZmFsc2V9LCJpc3MiOiJGaWxlIEJyb3dzZXIiLCJleHAiOjE2OTkzNTUyNTMsImlhdCI6MTY5OTM0ODA1M30.xOF_H27bkI2qL0ozpDGWCJKOToegAzZjIk6edFWqZC0") { log.Printf("auth fail") return } path := filePath + r.Header.Get("Uri") createFile(path) imgPath := path + header.Filename log.Printf("path is %s", path)
dst, err := os.Create(imgPath) if err != nil { log.Fatalf("create file error :%s", err.Error()) } _, err = io.Copy(dst, file) if err != nil { log.Fatalf("copy file error :%s", err.Error()) } log.Printf("upload success") io.WriteString(w, "{\"code\": 0, \"data\": {\"url\": \"" + (r.Header.Get("ImgHost") + r.Header.Get("Uri") + header.Filename ) + "\"}}") }
func createFile(filePath string) error { if !isExist(filePath) { err := os.MkdirAll(filePath,os.ModePerm) return err } return nil }
func isExist(path string) bool { _, err := os.Stat(path) if err != nil { if os.IsExist(err) { return true } return false } return true }
|