是这样的,现在分析抓包数据
test.go
package main
import (
"fmt"
"log"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
// Upload single file
r.MaxMultipartMemory = 8 << 20
r.POST("/upload", func(c *gin.Context) {
// 尝试从请求表单中获取名为file 的文件,返回两个值,分别是 *mutilepart.FileHeader 和 error
// *mutilepart.FileHeader 是一个结构体,包含了文件的元数据,如文件名、文件大小、MIME类型
file, _ := c.FormFile("file")
log.Println(file.Filename)
dst := "./" + file.Filename
//把文件上传到指定了路径 当前是把文件上传到当前目录下
c.SaveUploadedFile(file, dst)
c.String(200, fmt.Sprintf("'%s' upload", file.Filename))
})
r.Run(":8080")
}
启动服务器
go run test.go
上面的这张图详细介绍了起始行、头部字段、空行、消息体都有哪些东邪,以及分析这些字段的意思
下面再上传一个压缩文件
注意哈,可以通过curl 模拟上床数据(不得不说curl 命令真强大)
curl -X POST http://localhost:8080/upload -F “file=@/yourpath/main.zip” -H “Content-Type:multipart/form-data”
简单讲一下这些参数-X POST 请求方式
url
-F “file=@xxx/main.zip” 要上传的文件
-H 采用表单编码方式请求数据
使用openssl生成server.key 、server.pem
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.pem
req - 请求处理器,用于处理SSL证书的请求。
-x509 - 指定生成一个X.509格式的SSL证书。
-nodes - 指定不对生成的SSL证书进行加密。
-days 365 - 指定证书的有效期为365天。
-newkey rsa:2048 - 创建一个新的2048位的密钥。
-keyout my.key - 指定生成的密钥保存到my.key文件。
-out my.crt - 指定生成的SSL证书保存到my.crt文件