ホームページ > バックエンド開発 > Golang > Go で「Content-Type: multipart/form-data」を使用して投稿するときの「[301 301 Moved Permanently]」エラーを解決する方法

Go で「Content-Type: multipart/form-data」を使用して投稿するときの「[301 301 Moved Permanently]」エラーを解決する方法

Susan Sarandon
リリース: 2024-10-29 20:58:02
オリジナル
289 人が閲覧しました

How to Resolve

「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート