From b9435ff40b78e502ca608eb4ab798d29e02d4ce4 Mon Sep 17 00:00:00 2001 From: eatmoreapple <15055461510@163.com> Date: Wed, 16 Feb 2022 12:42:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client.go | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/client.go b/client.go index 2e0882a..a4adfec 100644 --- a/client.go +++ b/client.go @@ -389,18 +389,16 @@ func (c *Client) WebWxUploadMediaByChunk(file *os.File, request *BaseRequest, in // 分块上传 for chunk := 0; int64(chunk) < chunks; chunk++ { - var isLastTime bool - if int64(chunk)+1 == chunks { - isLastTime = true - } + isLastTime := int64(chunk)+1 == chunks if chunks > 1 { 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 { 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 - } 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() if err = writer.Close(); err != nil { 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) // 发送数据 resp, err = c.Do(req)