修复ghttp.BindParams对@file文件上传标识符的转义问题

This commit is contained in:
john
2018-09-26 18:44:30 +08:00
parent ba3d264f0c
commit fd644fb2a9
2 changed files with 18 additions and 4 deletions

View File

@ -15,6 +15,9 @@ import (
"mime/multipart"
"os"
"io"
"gitee.com/johng/gf/g/os/gfile"
"errors"
"fmt"
)
// http客户端
@ -74,8 +77,12 @@ func (c *Client) Post(url, data string) (*ClientResponse, error) {
for _, item := range strings.Split(data, "&") {
array := strings.Split(item, "=")
if len(array[1]) > 6 && strings.Compare(array[1][0:6], "@file:") == 0 {
if file, err := writer.CreateFormFile(array[0], array[1][6:]); err == nil {
if f, err := os.Open(array[1][6:]); err == nil {
path := array[1][6:]
if !gfile.Exists(path) {
return nil, errors.New(fmt.Sprintf(`"%s" does not exist`, path))
}
if file, err := writer.CreateFormFile(array[0], path); err == nil {
if f, err := os.Open(path); err == nil {
defer f.Close()
if _, err = io.Copy(file, f); err != nil {
return nil, err

View File

@ -6,7 +6,10 @@
package ghttp
import "gitee.com/johng/gf/g/encoding/gurl"
import (
"gitee.com/johng/gf/g/encoding/gurl"
"strings"
)
// 构建请求参数将参数进行urlencode编码
func BuildParams(params map[string]string) string {
@ -15,7 +18,11 @@ func BuildParams(params map[string]string) string {
if len(s) > 0 {
s += "&"
}
s += k + "=" + gurl.Encode(v)
if len(v) > 6 && strings.Compare(v[0 : 6], "@file:") == 0 {
s += k + "=" + v
} else {
s += k + "=" + gurl.Encode(v)
}
}
return s
}