Home >Backend Development >Golang >How to Customize Content-Type for Individual Form Fields in Go\'s Multipart Form?
Customizing Content-Type for Multipart Form Fields in Go
This question pertains to customizing the Content-Type for individual form fields within a multipart form created using the Go mime/multipart package. While the original code creates the multipart form, it assumes a default "application/octet-stream" Content-Type. The goal is to set a specific Content-Type for a specific field, such as "audio/wav;rate=8000" for an audio file.
The native mime/multipart package does not provide explicit support for setting the Content-Type for individual fields. However, a custom implementation can be used to achieve this.
<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>
This function creates a new form part with the desired Content-Type. The original code can be modified to use this function:
<code class="go">audioFile, _ := CreateAudioFormFile(writer, "helloWorld.wav") io.Copy(audioFile, file)</code>
Now, the API will receive the multipart form with the appropriate Content-Type for the audio file. The resulting form data will resemble the following:
--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732 Content-Disposition: form-data; name="file"; filename="helloWorld.wav" Content-Type: audio/wav;rate=8000 [audio file data] --0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732--
The above is the detailed content of How to Customize Content-Type for Individual Form Fields in Go\'s Multipart Form?. For more information, please follow other related articles on the PHP Chinese website!