Exo form
This commit is contained in:
parent
909b315bea
commit
afcdb97e62
2
.gitignore
vendored
2
.gitignore
vendored
@ -57,3 +57,5 @@ tpl-text/tpl-text
|
||||
tpl-ex1/tpl-ex1
|
||||
tpl-ex2/tpl-ex2
|
||||
tpl-ex3/tpl-ex3
|
||||
form-ex1/form-ex1
|
||||
form-ex2/form-ex2
|
||||
|
23
form-ex1/form.html
Normal file
23
form-ex1/form.html
Normal file
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>Form ex1</title></head>
|
||||
<body>
|
||||
{{ if .first }}
|
||||
{{ if .last }}
|
||||
<p>Hello {{ .first }} {{ .last }}</p>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<form method="POST">
|
||||
<label>
|
||||
First name:
|
||||
<input type="text" name="first" value="{{ .first }}"/>
|
||||
</label>
|
||||
<label>
|
||||
Last name:
|
||||
<input type="text" name="last" value="{{ .last }}"/>
|
||||
</label>
|
||||
<input type="submit" value="Submit"/>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
24
form-ex1/main.go
Normal file
24
form-ex1/main.go
Normal file
@ -0,0 +1,24 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"html/template"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func handleForm(res http.ResponseWriter, req *http.Request) {
|
||||
data := map[string]string{
|
||||
"first": req.FormValue("first"),
|
||||
"last": req.FormValue("last"),
|
||||
}
|
||||
tpl, err := template.ParseFiles("form.html")
|
||||
if err != nil {
|
||||
http.Error(res, err.Error(), 500)
|
||||
} else {
|
||||
tpl.Execute(res, data)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/", handleForm)
|
||||
http.ListenAndServe(":9000", nil)
|
||||
}
|
18
form-ex2/form.html
Normal file
18
form-ex2/form.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>Form ex2</title></head>
|
||||
<body>
|
||||
{{ if . }}
|
||||
<p>{{ . }}</p>
|
||||
{{ else }}
|
||||
<form method="POST" enctype="multipart/form-data">
|
||||
<label>
|
||||
Fichier:
|
||||
<input type="file" name="file"/>
|
||||
</label>
|
||||
<input type="submit" value="Submit"/>
|
||||
</form>
|
||||
{{ end }}
|
||||
</body>
|
||||
</html>
|
||||
|
54
form-ex2/main.go
Normal file
54
form-ex2/main.go
Normal file
@ -0,0 +1,54 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"html/template"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func handle(path string, handleFunc func(res http.ResponseWriter, req *http.Request) error) {
|
||||
http.HandleFunc("/", func(res http.ResponseWriter, req *http.Request) {
|
||||
err := handleFunc(res, req)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
http.Error(res, err.Error(), 500)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func handleForm(res http.ResponseWriter, req *http.Request) error {
|
||||
tpl, err := template.ParseFiles("form.html")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var msg string
|
||||
if req.Method == http.MethodPost {
|
||||
file, header, err := req.FormFile("file")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tmpFile, err := os.Create(filepath.Join(os.TempDir(), header.Filename))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer tmpFile.Close()
|
||||
|
||||
sz, err := io.Copy(tmpFile, file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
msg = fmt.Sprintf("File uploaded (%d bytes)", sz)
|
||||
}
|
||||
tpl.Execute(res, msg)
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
handle("/", handleForm)
|
||||
http.ListenAndServe(":9000", nil)
|
||||
}
|
Loading…
Reference in New Issue
Block a user