func createHandler()

in code/app/main.go [84:113]


func createHandler(w http.ResponseWriter, r *http.Request) {
	r.ParseMultipartForm(10 << 20)
	// FormFile returns the first file for the given key `myFile`
	// it also returns the FileHeader so we can get the Filename,
	// the Header and the size of the file
	file, handler, err := r.FormFile("myFile")
	if err != nil {
		writeErrorMsg(w, fmt.Errorf("error retrieving file: %v", err))
		return
	}
	defer file.Close()

	mimemap := NewMimeMap([]string{"image/png", "image/jpeg", "image/gif"})

	mimetype := handler.Header.Get("Content-Type")

	if !mimemap.Valid(mimetype) {
		mimelist := mimemap.List()
		writeErrorMsg(w, fmt.Errorf("invalid image type, want one of %s got : %s", mimelist, mimetype))
		return
	}

	if err := cs.Create(handler.Filename, file); err != nil {
		writeErrorMsg(w, fmt.Errorf("image couldn't be created: %v", err))
		return
	}

	writeResponse(w, http.StatusCreated, "")
	return
}