Improve "Upload file" example, Fix MD typos
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							17af53a565
						
					
				
				
					commit
					050937dab8
				
			
							
								
								
									
										50
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								README.md
									
									
									
									
									
								
							@ -111,7 +111,7 @@ BenchmarkZeus_GithubAll 		| 2000 		| 944234 	| 300688 	| 2648
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## API Examples
 | 
					## API Examples
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Using GET, POST, PUT, PATCH, DELETE and OPTIONS
 | 
					### Using GET, POST, PUT, PATCH, DELETE and OPTIONS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
@ -137,7 +137,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Parameters in path
 | 
					### Parameters in path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
@ -162,7 +162,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Querystring parameters
 | 
					### Querystring parameters
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	router := gin.Default()
 | 
						router := gin.Default()
 | 
				
			||||||
@ -229,9 +229,9 @@ func main() {
 | 
				
			|||||||
id: 1234; page: 1; name: manu; message: this_is_great
 | 
					id: 1234; page: 1; name: manu; message: this_is_great
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### upload file
 | 
					### Upload files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### upload single file
 | 
					#### Single file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
References issue [#774](https://github.com/gin-gonic/gin/issues/774) and detail [example code](examples/upload-file/single).
 | 
					References issue [#774](https://github.com/gin-gonic/gin/issues/774) and detail [example code](examples/upload-file/single).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -243,13 +243,13 @@ func main() {
 | 
				
			|||||||
		file, _ := c.FormFile("file")
 | 
							file, _ := c.FormFile("file")
 | 
				
			||||||
		log.Println(file.Filename)
 | 
							log.Println(file.Filename)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		c.String(http.StatusOK, "Uploaded...")
 | 
							c.String(http.StatusOK, fmt.Printf("'%s' uploaded!", file.Filename))
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	router.Run(":8080")
 | 
						router.Run(":8080")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
curl command:
 | 
					How to `curl`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
curl -X POST http://localhost:8080/upload \
 | 
					curl -X POST http://localhost:8080/upload \
 | 
				
			||||||
@ -257,7 +257,7 @@ curl -X POST http://localhost:8080/upload \
 | 
				
			|||||||
  -H "Content-Type: multipart/form-data"
 | 
					  -H "Content-Type: multipart/form-data"
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### upload multiple files
 | 
					#### Multiple files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See the detail [example code](examples/upload-file/multiple).
 | 
					See the detail [example code](examples/upload-file/multiple).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -272,13 +272,13 @@ func main() {
 | 
				
			|||||||
		for _, file := range files {
 | 
							for _, file := range files {
 | 
				
			||||||
			log.Println(file.Filename)
 | 
								log.Println(file.Filename)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		c.String(http.StatusOK, "Uploaded...")
 | 
							c.String(http.StatusOK, fmt.Printf("%d files uploaded!", len(files)))
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	router.Run(":8080")
 | 
						router.Run(":8080")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
curl command:
 | 
					How to `curl`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
curl -X POST http://localhost:8080/upload \
 | 
					curl -X POST http://localhost:8080/upload \
 | 
				
			||||||
@ -287,7 +287,7 @@ curl -X POST http://localhost:8080/upload \
 | 
				
			|||||||
  -H "Content-Type: multipart/form-data"
 | 
					  -H "Content-Type: multipart/form-data"
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Grouping routes
 | 
					### Grouping routes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
@ -314,7 +314,7 @@ func main() {
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Blank Gin without middleware by default
 | 
					### Blank Gin without middleware by default
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Use
 | 
					Use
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -328,7 +328,7 @@ r := gin.Default()
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Using middleware
 | 
					### Using middleware
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	// Creates a router without any middleware by default
 | 
						// Creates a router without any middleware by default
 | 
				
			||||||
@ -363,7 +363,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Model binding and validation
 | 
					### Model binding and validation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
To bind a request body into a type, use model binding. We currently support binding of JSON, XML and standard form values (foo=bar&boo=baz).
 | 
					To bind a request body into a type, use model binding. We currently support binding of JSON, XML and standard form values (foo=bar&boo=baz).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -413,7 +413,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Bind Query String
 | 
					### Bind Query String
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See the [detail information](https://github.com/gin-gonic/gin/issues/742#issuecomment-264681292).
 | 
					See the [detail information](https://github.com/gin-gonic/gin/issues/742#issuecomment-264681292).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -489,7 +489,7 @@ $ curl -v --form user=user --form password=password http://localhost:8080/login
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### XML, JSON and YAML rendering
 | 
					### XML, JSON and YAML rendering
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
@ -528,7 +528,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
####Serving static files
 | 
					### Serving static files
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
@ -542,7 +542,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
####HTML rendering
 | 
					### HTML rendering
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Using LoadHTMLGlob() or LoadHTMLFiles()
 | 
					Using LoadHTMLGlob() or LoadHTMLFiles()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -622,7 +622,7 @@ func main() {
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Redirects
 | 
					### Redirects
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Issuing a HTTP redirect is easy:
 | 
					Issuing a HTTP redirect is easy:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -634,7 +634,7 @@ r.GET("/test", func(c *gin.Context) {
 | 
				
			|||||||
Both internal and external locations are supported.
 | 
					Both internal and external locations are supported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Custom Middleware
 | 
					### Custom Middleware
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
func Logger() gin.HandlerFunc {
 | 
					func Logger() gin.HandlerFunc {
 | 
				
			||||||
@ -674,7 +674,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Using BasicAuth() middleware
 | 
					### Using BasicAuth() middleware
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
// simulate some private data
 | 
					// simulate some private data
 | 
				
			||||||
var secrets = gin.H{
 | 
					var secrets = gin.H{
 | 
				
			||||||
@ -713,7 +713,7 @@ func main() {
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Goroutines inside a middleware
 | 
					### Goroutines inside a middleware
 | 
				
			||||||
When starting inside a middleware or handler, you **SHOULD NOT** use the original context inside it, you have to use a read-only copy.
 | 
					When starting inside a middleware or handler, you **SHOULD NOT** use the original context inside it, you have to use a read-only copy.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
@ -745,7 +745,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Custom HTTP configuration
 | 
					### Custom HTTP configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Use `http.ListenAndServe()` directly, like this:
 | 
					Use `http.ListenAndServe()` directly, like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -772,7 +772,7 @@ func main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Graceful restart or stop
 | 
					### Graceful restart or stop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Do you want to graceful restart or stop your web server?
 | 
					Do you want to graceful restart or stop your web server?
 | 
				
			||||||
There are some ways this can be done.
 | 
					There are some ways this can be done.
 | 
				
			||||||
@ -803,7 +803,7 @@ An alternative to endless:
 | 
				
			|||||||
  - You should add/modify tests to cover your proposed code changes.
 | 
					  - You should add/modify tests to cover your proposed code changes.
 | 
				
			||||||
  - If your pull request contains a new feature, please document it on the README.
 | 
					  - If your pull request contains a new feature, please document it on the README.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Example
 | 
					## Users
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Awesome project lists using [Gin](https://github.com/gin-gonic/gin) web framework.
 | 
					Awesome project lists using [Gin](https://github.com/gin-gonic/gin) web framework.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user