@@ -2,7 +2,10 @@ package main
2
2
3
3
import (
4
4
"encoding/json"
5
+ "fmt"
6
+ "io/ioutil"
5
7
"log"
8
+ "mime/multipart"
6
9
"net/http"
7
10
"time"
8
11
@@ -122,6 +125,45 @@ func Handler() string {
122
125
return "Index"
123
126
}
124
127
128
+ //UploadHandler is a sample function to upload a file
129
+ func UploadHandler (res http.ResponseWriter , req * http.Request ) {
130
+ file , handle , err := req .FormFile ("file" )
131
+ if err != nil {
132
+ fmt .Fprintf (res , "%v" , err )
133
+ return
134
+ }
135
+ defer file .Close ()
136
+ mimeType := handle .Header .Get ("Content-Type" )
137
+ switch mimeType {
138
+ case "image/jpeg" :
139
+ saveFile (res , file , handle )
140
+ case "image/png" :
141
+ saveFile (res , file , handle )
142
+ default :
143
+ jsonResponse (res , http .StatusBadRequest , "The format file is not valid." )
144
+ }
145
+ }
146
+
147
+ func saveFile (res http.ResponseWriter , file multipart.File , handle * multipart.FileHeader ) {
148
+ data , err := ioutil .ReadAll (file )
149
+ if err != nil {
150
+ fmt .Fprintf (res , "%v" , err )
151
+ return
152
+ }
153
+ err = ioutil .WriteFile ("./files/" + handle .Filename , data , 0666 )
154
+ if err != nil {
155
+ fmt .Fprintf (res , "%v" , err )
156
+ return
157
+ }
158
+ jsonResponse (res , http .StatusCreated , "File Uploaded" )
159
+ }
160
+
161
+ func jsonResponse (res http.ResponseWriter , code int , message string ) {
162
+ res .Header ().Set ("Content-Type" , "application/json" )
163
+ res .WriteHeader (code )
164
+ fmt .Fprint (res , message )
165
+ }
166
+
125
167
func main () {
126
168
m := martini .Classic ()
127
169
m .Get ("/" , Handler )
@@ -130,6 +172,7 @@ func main() {
130
172
m .Get ("/getname/:id" , IDHandler )
131
173
m .Put ("/updatenames/:id" , UpdateHandler )
132
174
m .Delete ("/deletename/:id" , DeleteHandler )
175
+ m .Post ("/upload" , UploadHandler )
133
176
log .Println ("Connecting to MongoDB" )
134
177
Session , err = mgo .Dial ("localhost" )
135
178
if err != nil {
0 commit comments