使用“Content-Type: multipart/form-data”發布
嘗試發送帶有“Content-Type: multipart/form- data”的POST 請求時multipart/form-data”,您可能會遇到類似“[301 301 Moved Permanently]”的錯誤訊息。此問題。 paramTexts map[string]interface{}, paramFile FileItem) ([]byte, error) { // 建立一個多部分主體緩衝區和寫入器 bodyBuf := &bytes.Buffer{} bodyWriter := multipart.NewWriter(bodyBuf) // 新增字串參數 對於 k, v := 範圍 paramTexts { bodyWriter.WriteField(k, v.(字串)) } // 新增檔案參數 fileWriter, err := bodyWriter.CreateFormFile(paramFile.Key, paramFile.FileName) 如果錯誤! = nil { 回傳零,錯誤 } fileWriter.Write(paramFile.Content) // 設定內容類型 contentType := bodyWriter.FormDataContentType() // 關閉寫入器 bodyWriter.Close() resp, err := http.Post(url, contentType, bodyBuf) 如果錯誤! = nil { 回傳零,錯誤 } 延遲 resp.Body.Close() // 處理回應狀態 如果 resp.StatusCode = 300 { b, _ := ioutil.ReadAll(resp.Body) return nil, fmt.Errorf("[%d %s]%s", resp.StatusCode, resp.Status, string(b)) } // 讀取回應數據 respData, err := ioutil.ReadAll(resp.Body) 如果錯誤! = nil { 回傳零,錯誤 } 返回響應數據,零 } // 定義FileItem型別來表示檔案參數 類型 FileItem 結構 { 金鑰字串 // 例如“圖像內容” 檔案名稱字串 // 例如“測試.jpg” Content []byte // 檔案的位元組數組 }
此更新的程式碼使用具有多部分編寫器的 multipart/form-data 內容類型來正確建構 POST 請求。您可以向 NewPostFile 函數提供 API URL、參數文字對應和文件項目以執行成功的請求。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3