mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-12 16:52:28 +08:00
新增支持流的形式上传方式
This commit is contained in:
25
util/http.go
25
util/http.go
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user