Optimize data processing for the multipart type
This commit is contained in:
parent
3795aecb68
commit
64d8c9d5d0
13
headers.go
13
headers.go
@ -1,10 +1,3 @@
|
||||
/*
|
||||
*FileName: header.go
|
||||
*Author: JJXu
|
||||
*CreateTime: 2022/3/1 下午9:44
|
||||
*Description:
|
||||
*/
|
||||
|
||||
package simpleRequest
|
||||
|
||||
import (
|
||||
@ -70,6 +63,12 @@ func (s *HeadersConf) Add(header, value string) *HeadersConf {
|
||||
return s
|
||||
}
|
||||
|
||||
// Omit Use to disable automatically generated request headers ,some like Content_Type.
|
||||
func (s *HeadersConf) Omit(keys ...string) *HeadersConf {
|
||||
s.simpleReq.omitHeaderKeys = append(s.simpleReq.omitHeaderKeys, keys...)
|
||||
return s
|
||||
}
|
||||
|
||||
//一般用不到
|
||||
//func (s *HeadersConf) Values(keys string) *HeadersConf {
|
||||
// s.simpleReq.headers.Values(keys)
|
||||
|
20
parser.go
20
parser.go
@ -92,30 +92,16 @@ func multipartCommonParse(BodyEntry map[string]any) (reader io.Reader, contentTy
|
||||
formWriter := multipart.NewWriter(body)
|
||||
for k, sv := range BodyEntry {
|
||||
if strings.Contains(k, FormFilePathKey.string()) {
|
||||
key := k[len(FormFilePathKey):]
|
||||
fieldName := k[len(FormFilePathKey):]
|
||||
fp := sv.(string)
|
||||
filename := filepath.Base(fp)
|
||||
filePart, _ := formWriter.CreateFormFile(key, filename)
|
||||
//way1
|
||||
filePart, _ := formWriter.CreateFormFile(fieldName, filename)
|
||||
content, err := os.ReadFile(fp)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
_, _ = filePart.Write(content)
|
||||
|
||||
// way 2
|
||||
file, err := os.Open(fp)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer file.Close()
|
||||
fieldName := k[len(FormFilePathKey.string()):]
|
||||
formPart, err := formWriter.CreateFormFile(fieldName, filepath.Base(fp))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if _, err = io.Copy(formPart, file); err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
switch multValue := sv.(type) {
|
||||
case string:
|
||||
|
@ -46,6 +46,7 @@ type SimpleRequest struct {
|
||||
queryParams url.Values
|
||||
body io.Reader
|
||||
headers http.Header
|
||||
omitHeaderKeys []string
|
||||
transport *http.Transport
|
||||
|
||||
BodyEntryMark EntryMark
|
||||
@ -182,9 +183,13 @@ func (s *SimpleRequest) LaunchTo(urls, method string) (body []byte, err error) {
|
||||
return nil, err
|
||||
}
|
||||
//headers
|
||||
for k := range s.headers {
|
||||
r.Header[k] = append(r.Header[k], s.headers[k]...)
|
||||
s.headers.Del(k)
|
||||
//for k := range s.headers {
|
||||
// r.Header[k] = append(r.Header[k], s.headers[k]...)
|
||||
// s.headers.Del(k)
|
||||
//}
|
||||
r.Header = s.headers
|
||||
for _, k := range s.omitHeaderKeys {
|
||||
r.Header.Del(k)
|
||||
}
|
||||
//queryParams
|
||||
if r.URL.RawQuery != "" {
|
||||
|
Loading…
Reference in New Issue
Block a user