1
0
mirror of https://github.com/silenceper/wechat.git synced 2026-02-12 08:42:28 +08:00

新增支持流的形式上传方式

This commit is contained in:
_oah
2024-07-11 21:57:23 +08:00
parent 1138a7db0e
commit f3024864cf
7 changed files with 61 additions and 21 deletions

View File

@@ -146,13 +146,23 @@ func PostJSONWithRespContentType(uri string, obj interface{}) ([]byte, string, e
return responseData, contentType, err
}
// PostFile 上传文件
func PostFile(fieldName, filename, uri string) ([]byte, error) {
// PostFile 支持流或文件形式上传
func PostFile(fieldName string, data []byte, fileName string, directory string, uri string) ([]byte, error) {
var fileContent []byte
var isFile bool
// 数据为空且文件目录不为空则按文件形式上传
if len(data) == 0 && directory != "" {
isFile = true
} else {
fileContent = data
}
fields := []MultipartFormField{
{
IsFile: true,
IsFile: isFile,
Fieldname: fieldName,
Filename: filename,
Value: fileContent,
Filename: fileName,
Directory: directory,
},
}
return PostMultipartForm(fields, uri)
@@ -164,6 +174,7 @@ type MultipartFormField struct {
Fieldname string
Value []byte
Filename string
Directory string
}
// PostMultipartForm 上传文件或其他多个字段
@@ -176,13 +187,13 @@ func PostMultipartForm(fields []MultipartFormField, uri string) (respBody []byte
for _, field := range fields {
if field.IsFile {
fileWriter, e := bodyWriter.CreateFormFile(field.Fieldname, field.Filename)
fileWriter, e := bodyWriter.CreateFormFile(field.Fieldname, field.Directory)
if e != nil {
err = fmt.Errorf("error writing to buffer , err=%v", e)
return
}
fh, e := os.Open(field.Filename)
fh, e := os.Open(field.Directory)
if e != nil {
err = fmt.Errorf("error opening file , err=%v", e)
return
@@ -193,7 +204,7 @@ func PostMultipartForm(fields []MultipartFormField, uri string) (respBody []byte
return
}
} else {
partWriter, e := bodyWriter.CreateFormField(field.Fieldname)
partWriter, e := bodyWriter.CreateFormFile(field.Fieldname, field.Filename)
if e != nil {
err = e
return