From abb9c88c2340d8ec583f1b55b4961cd083430d47 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 25 Mar 2020 15:17:18 +0800 Subject: [PATCH] improve ghttp.Client --- net/ghttp/ghttp_client_request.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/net/ghttp/ghttp_client_request.go b/net/ghttp/ghttp_client_request.go index eaf686334..11c1446ae 100644 --- a/net/ghttp/ghttp_client_request.go +++ b/net/ghttp/ghttp_client_request.go @@ -97,7 +97,6 @@ func (c *Client) DoRequest(method, url string, data ...interface{}) (resp *Clien // File uploading request. buffer := new(bytes.Buffer) writer := multipart.NewWriter(buffer) - defer writer.Close() for _, item := range strings.Split(param, "&") { array := strings.Split(item, "=") if len(array[1]) > 6 && strings.Compare(array[1][0:6], "@file:") == 0 { @@ -107,10 +106,11 @@ func (c *Client) DoRequest(method, url string, data ...interface{}) (resp *Clien } 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 { + f.Close() return nil, err } + f.Close() } else { return nil, err } @@ -118,11 +118,16 @@ func (c *Client) DoRequest(method, url string, data ...interface{}) (resp *Clien return nil, err } } else { - if err := writer.WriteField(array[0], array[1]); err != nil { + if err = writer.WriteField(array[0], array[1]); err != nil { return nil, err } } } + // Close finishes the multipart message and writes the trailing + // boundary end line to the output. + if err = writer.Close(); err != nil { + return nil, err + } if req, err = http.NewRequest(method, url, buffer); err != nil { return nil, err } else {