「Content-Type: multipart/form-data」で投稿
「Content-Type:」の POST リクエストを送信しようとしたときmultipart/form-data」を実行すると、「[301 301 Moved Permanently]」のようなエラー メッセージが表示される場合があります。この問題は通常、バイト パラメータと文字列引数を API に POST しようとしたときに発生します。
このエラーを解決し、multipart/form-data を使用して POST リクエストを正常に実行するには、Go コードを次のように変更します。
<code class="go">func NewPostFile(url string, paramTexts map[string]interface{}, paramFile FileItem) ([]byte, error) { // Create a multipart body buffer and writer bodyBuf := &bytes.Buffer{} bodyWriter := multipart.NewWriter(bodyBuf) // Add string parameters for k, v := range paramTexts { bodyWriter.WriteField(k, v.(string)) } // Add file parameter fileWriter, err := bodyWriter.CreateFormFile(paramFile.Key, paramFile.FileName) if err != nil { return nil, err } fileWriter.Write(paramFile.Content) // Set content type contentType := bodyWriter.FormDataContentType() // Close the writer bodyWriter.Close() resp, err := http.Post(url, contentType, bodyBuf) if err != nil { return nil, err } defer resp.Body.Close() // Handle response status if resp.StatusCode < 200 || resp.StatusCode >= 300 { b, _ := ioutil.ReadAll(resp.Body) return nil, fmt.Errorf("[%d %s]%s", resp.StatusCode, resp.Status, string(b)) } // Read response data respData, err := ioutil.ReadAll(resp.Body) if err != nil { return nil, err } return respData, nil } // Define FileItem type to represent file parameters type FileItem struct { Key string // e.g. "image_content" FileName string // e.g. "test.jpg" Content []byte // Byte array of the file }</code>
この更新されたコードは、マルチパート ライターで multipart/form-data コンテンツ タイプを使用して、POST リクエストを正しく構築します。 API URL、パラメータ テキスト マップ、およびファイル アイテムを NewPostFile 関数に指定して、リクエストを正常に実行できます。
以上がGo で「Content-Type: multipart/form-data」を使用して投稿するときの「[301 301 Moved Permanently]」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。