arnaucube
arnaucube/goImgServerPublic Self-hosted repository
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}