ホームページ >バックエンド開発 >Golang >Go のマルチパート フォームの個々のフォーム フィールドの Content-Type をカスタマイズするにはどうすればよいですか?

Go のマルチパート フォームの個々のフォーム フィールドの Content-Type をカスタマイズするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-27 10:23:03979ブラウズ

How to Customize Content-Type for Individual Form Fields in Go's Multipart Form?

Go でマルチパート フォーム フィールドの Content-Type をカスタマイズする

この質問は、マルチパート内の個々のフォーム フィールドの Content-Type のカスタマイズに関するものです。 Go mime/multipart パッケージを使用して作成されたフォーム。元のコードはマルチパート フォームを作成しますが、デフォルトの「application/octet-stream」Content-Type を想定しています。目標は、オーディオ ファイルの「audio/wav;rate=8000」など、特定のフィールドに特定の Content-Type を設定することです。

ネイティブ mime/multipart パッケージは、設定に対する明示的なサポートを提供しません。個々のフィールドの Content-Type。ただし、カスタム実装を使用してこれを実現できます。

<code class="go">func CreateAudioFormFile(w *multipart.Writer, filename string) (io.Writer, error) {
    h := make(textproto.MIMEHeader)
    h.Set("Content-Disposition", fmt.Sprintf(`form-data; name="%s"; filename="%s"`, "file", filename))
    h.Set("Content-Type", "audio/wav;rate=8000")
    return w.CreatePart(h)
}</code>

この関数は、目的の Content-Type で新しいフォーム パーツを作成します。この関数を使用するように元のコードを変更できます。

<code class="go">audioFile, _ := CreateAudioFormFile(writer, "helloWorld.wav")
io.Copy(audioFile, file)</code>

これで、API はオーディオ ファイルに適切な Content-Type を持つマルチパート フォームを受け取ります。結果のフォーム データは次のようになります:

--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732
Content-Disposition: form-data; name="file"; filename="helloWorld.wav"
Content-Type: audio/wav;rate=8000
[audio file data]
--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732--

以上がGo のマルチパート フォームの個々のフォーム フィールドの Content-Type をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。