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