goImgServer/handlers.go
handlers.goRaw
1package main
2
3import (
4 "fmt"
5 "image/jpeg"
6 "io/ioutil"
7 "net/http"
8 "strings"
9
10 "github.com/gorilla/mux"
11)
12
13func Index(w http.ResponseWriter, r *http.Request) {
14 fmt.Fprintln(w, "Welcome! To send images, go to /image")
15}
16
17func ImageShow(w http.ResponseWriter, r *http.Request) {
18 vars := mux.Vars(r)
19 imageName := vars["imageName"]
20
21 file, err := ioutil.ReadFile(config.Folder + "/" + imageName)
22 if err != nil {
23 fmt.Fprintln(w, err)
24 }
25
26 img, err := dataToImage(file, imageName)
27
28 if err != nil {
29 fmt.Fprintln(w, "la imatge no existeix al server")
30 } else {
31 jpeg.Encode(w, img, nil) // Write to the ResponseWriter
32 }
33}
34
35func NewImage(w http.ResponseWriter, r *http.Request) {
36 err := ipFilter(r)
37 if err != nil {
38 fmt.Fprintln(w, err.Error())
39 return
40 }
41 file, handler, err := r.FormFile("file")
42 if err != nil {
43 fmt.Println(err)
44 }
45 imageName := strings.Split(handler.Filename, ".")[0]
46 fileName := imageName + ".png"
47 data, err := ioutil.ReadAll(file)
48 if err != nil {
49 fmt.Println(err)
50 }
51
52 img, err := dataToImage(data, handler.Filename)
53 if err != nil {
54 fmt.Fprintln(w, "error al processar la imatge")
55 }
56 img = Resize(img)
57 data, err = imageToPNG(img)
58 if err != nil {
59 fmt.Fprintln(w, "error al processar la imatge")
60 }
61 err = ioutil.WriteFile(config.Folder+"/"+fileName, data, 0777)
62 if err != nil {
63 fmt.Println(err)
64 }
65
66 fmt.Fprintln(w, "http://"+config.ServerIP+":"+config.ServerPort+"/images/"+fileName)
67}