首頁 >後端開發 >Golang >如何在 Go 的多部分錶單中自訂單一表單欄位的內容類型?

如何在 Go 的多部分錶單中自訂單一表單欄位的內容類型?

Patricia Arquette
Patricia Arquette原創
2024-10-27 10:23:03983瀏覽

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

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn