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