亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 向 http 多部分請求添加多個文件

Golang 向 http 多部分請求添加多個文件

Go
慕的地8271018 2021-08-16 16:22:14
目前我正在分別流式傳輸 2 個多部分請求。包含作為 blob 的文件包含一個 json 文件作為 blob 的描述如何使用多部分同時上傳它們?這是運行 2 次的請求。我想在這 1 個請求中添加 2 個文件 func(c *Client) Upload(h *UploadHandle) (*PutResult, error) {        bodyReader, bodySize, err := h.Read()        if err != nil {            return nil, fmt.Errorf("Failed to peek the body size %v", err)        }        if bodySize > constants.MaxDropSize {            return nil, errors.New("The size of the body is to big")        }        pipeReader, pipeWriter := io.Pipe()        writer := multipart.NewWriter(pipeWriter)        errChan := make(chan error, 1)        go func() {            defer pipeWriter.Close()            part, err := writer.CreateFormFile(h.DropRef, h.DropRef)            if err != nil {                errChan <- err                return            }            _, err = io.Copy(part, bodyReader)            if err == nil {                err = writer.Close()            }            errChan <- err        }()        uploadUrl := fmt.Sprintf("%s/drops/upload", c.Server)        req, err := http.NewRequest("POST", uploadUrl, pipeReader)        if err != nil {            return nil, err        }        req.Header.Add("Content-Type", writer.FormDataContentType())        req.Body = ioutil.NopCloser(pipeReader)        resp, err := c.Do(req)        if err != nil {            return nil, fmt.Errorf("Failed doing request: %v", err)        }        defer resp.Body.Close()        // Handling the error the routine may caused        if err := <-errChan; err != nil {            return nil, err        }        if resp.StatusCode != 200 {            return nil, fmt.Errorf("The server responded with a status %d", resp.StatusCode)        }    return &PutResult{h.DropRef, bodySize}, nil}
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 367 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號