Hack for parsing multipart/form-data from iOS
Well I have no idea~ Signed-off-by: Yuan Si <do4suki@gmail.com>
This commit is contained in:
@@ -24,13 +24,6 @@ func CheckErr(err error) {
|
||||
func Common(ctx *gin.Context) {
|
||||
ctx.Set("req_time", time.Now().Unix())
|
||||
|
||||
ctx.Request.ParseMultipartForm(0)
|
||||
if len(ctx.PostForm("request_data")) == 0 {
|
||||
// 弱智iOS客户端经常发些空的表单上来...
|
||||
fmt.Println("Fuck you, iOS!")
|
||||
ctx.Abort()
|
||||
}
|
||||
|
||||
authorize := ctx.Request.Header.Get("Authorize")
|
||||
if authorize == "" {
|
||||
ctx.String(http.StatusForbidden, ErrorMsg)
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"io"
|
||||
"mime/multipart"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func ParseMultipartForm(ctx *gin.Context) {
|
||||
if ctx.Request.Header.Get("OS") != "Android" {
|
||||
// I don't know why mime.ParseMediaType() is failed
|
||||
// mime.ParseMediaType(ctx.Request.Header.Get("Content-Type"))
|
||||
boundary := strings.ReplaceAll(ctx.Request.Header.Get("Content-Type"), "multipart/form-data; boundary=", "")
|
||||
|
||||
var reqData []byte
|
||||
mReader := multipart.NewReader(ctx.Request.Body, boundary)
|
||||
for {
|
||||
part, err := mReader.NextPart()
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
CheckErr(err)
|
||||
|
||||
data, err := io.ReadAll(part)
|
||||
CheckErr(err)
|
||||
|
||||
reqData = data
|
||||
}
|
||||
ctx.Set("request_data", string(reqData))
|
||||
}
|
||||
|
||||
ctx.Next()
|
||||
}
|
||||
Reference in New Issue
Block a user