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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-28 08:01:02665ブラウズ

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

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

マルチパート フォームを送信するには、多くの場合、個々のフィールドに特定の Content-Type ヘッダーを指定する必要があります。音声ファイルをアップロードするときなど。 Go の multipart/mime パッケージはマルチパート フォームを作成する便利な方法を提供しますが、フィールド固有の Content-Type ヘッダーを設定することはできません。

Solution

As現在、この機能に対する組み込みのサポートはありませんが、カスタム ソリューションを実装できます。 CreateFormFile 関数の修正バージョンを次に示します。

<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>

使用法

このカスタム関数を使用するには:

<code class="go">// Get file as bytes
file, err := os.Open("helloWorld.wav")
buf := new(bytes.Buffer)
writer := multipart.NewWriter(buf)

// Create multipart form field with custom Content-Type header
audioFile, _ := CreateAudioFormFile(writer, "helloWorld.wav")

// Copy file data to multipart form field
io.Copy(audioFile, file)
writer.Close()</code>

出力

これにより、次のメタデータを含むマルチパート フォームが生成されます:

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

このようにして、multipart/mime を使用するときに特定のフォーム フィールドの Content-Type を簡単に設定できます。パッケージ。

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

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