修复文件上传的bug
This commit is contained in:
parent
ac136265e0
commit
b9435ff40b
37
client.go
37
client.go
@ -389,18 +389,16 @@ func (c *Client) WebWxUploadMediaByChunk(file *os.File, request *BaseRequest, in
|
|||||||
// 分块上传
|
// 分块上传
|
||||||
for chunk := 0; int64(chunk) < chunks; chunk++ {
|
for chunk := 0; int64(chunk) < chunks; chunk++ {
|
||||||
|
|
||||||
var isLastTime bool
|
isLastTime := int64(chunk)+1 == chunks
|
||||||
if int64(chunk)+1 == chunks {
|
|
||||||
isLastTime = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if chunks > 1 {
|
if chunks > 1 {
|
||||||
content["chunk"] = strconv.Itoa(chunk)
|
content["chunk"] = strconv.Itoa(chunk)
|
||||||
}
|
}
|
||||||
|
|
||||||
var formBuffer bytes.Buffer
|
var formBuffer = bytes.NewBuffer(nil)
|
||||||
|
|
||||||
|
writer := multipart.NewWriter(formBuffer)
|
||||||
|
|
||||||
writer := multipart.NewWriter(&formBuffer)
|
|
||||||
if err = writer.WriteField("uploadmediarequest", string(uploadMediaRequestByte)); err != nil {
|
if err = writer.WriteField("uploadmediarequest", string(uploadMediaRequestByte)); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -411,22 +409,29 @@ func (c *Client) WebWxUploadMediaByChunk(file *os.File, request *BaseRequest, in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if w, err := writer.CreateFormFile("filename", file.Name()); err != nil {
|
w, err := writer.CreateFormFile("filename", file.Name())
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else {
|
|
||||||
chunkData := make([]byte, chunkSize)
|
|
||||||
if _, err := file.Read(chunkData); err != nil && err != io.EOF {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if _, err = w.Write(chunkData); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chunkData := make([]byte, chunkSize)
|
||||||
|
|
||||||
|
n, err := file.Read(chunkData)
|
||||||
|
|
||||||
|
if err != nil && err != io.EOF {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err = w.Write(chunkData[:n]); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
ct := writer.FormDataContentType()
|
ct := writer.FormDataContentType()
|
||||||
if err = writer.Close(); err != nil {
|
if err = writer.Close(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
req, _ := http.NewRequest(http.MethodPost, path.String(), &formBuffer)
|
req, _ := http.NewRequest(http.MethodPost, path.String(), formBuffer)
|
||||||
req.Header.Set("Content-Type", ct)
|
req.Header.Set("Content-Type", ct)
|
||||||
// 发送数据
|
// 发送数据
|
||||||
resp, err = c.Do(req)
|
resp, err = c.Do(req)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user