1
0
mirror of https://github.com/labstack/echo.git synced 2024-12-24 20:14:31 +02:00
Signed-off-by: Vishal Rana <vr@labstack.com>
This commit is contained in:
Vishal Rana 2015-11-16 07:57:40 -08:00
parent 0163cddab5
commit f09efac326
3 changed files with 41 additions and 13 deletions

16
echo.go
View File

@ -463,7 +463,21 @@ func (e *Echo) Routes() []Route {
// ServeHTTP implements `http.Handler` interface, which serves HTTP requests.
func (e *Echo) ServeHTTP(w http.ResponseWriter, r *http.Request) {
e.router.ServeHTTP(w, r)
c := e.pool.Get().(*Context)
h, e := e.router.Find(r.Method, r.URL.Path, c)
c.reset(r, w, e)
// Chain middleware with handler in the end
for i := len(e.middleware) - 1; i >= 0; i-- {
h = e.middleware[i](h)
}
// Execute chain
if err := h(c); err != nil {
e.httpErrorHandler(err, c)
}
e.pool.Put(c)
}
// Server returns the internal *http.Server.

View File

@ -398,18 +398,10 @@ End:
func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) {
c := r.echo.pool.Get().(*Context)
h, e := r.Find(req.Method, req.URL.Path, c)
c.reset(req, w, e)
// Chain middleware with handler in the end
for i := len(e.middleware) - 1; i >= 0; i-- {
h = e.middleware[i](h)
}
// Execute chain
h, _ := r.Find(req.Method, req.URL.Path, c)
c.reset(req, w, r.echo)
if err := h(c); err != nil {
e.httpErrorHandler(err, c)
r.echo.httpErrorHandler(err, c)
}
e.pool.Put(c)
r.echo.pool.Put(c)
}

View File

@ -12,6 +12,28 @@ menu:
Use `req.ParseMultipartForm(16 << 20)` for manually parsing multipart form. It gives
us an option to specify the maximum memory used while parsing the request body.
If you just want to upload a single file:
```go
file, fh, err := req.FormFile("file")
if err != nil {
return err
}
defer file.Close()
// Destination
dst, err := os.Create(fh.Filename)
if err != nil {
return err
}
defer dst.Close()
// Copy
if _, err = io.Copy(dst, file); err != nil {
return err
}
```
### Server
`server.go`