在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中文網其他相關文章!