在 Go 中自定义多部分表单字段的内容类型
此问题涉及为多部分中的各个表单字段自定义内容类型使用 Go mime/multipart 包创建的表单。虽然原始代码创建了多部分表单,但它采用默认的“application/octet-stream”内容类型。目标是为特定字段设置特定的 Content-Type,例如音频文件的“audio/wav;rate=8000”。
原生 mime/multipart 包不提供对设置的显式支持各个字段的内容类型。但是,可以使用自定义实现来实现此目的。
<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">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 的多部分表单中自定义单个表单字段的内容类型?的详细内容。更多信息请关注PHP中文网其他相关文章!