首頁  >  文章  >  後端開發  >  如何在 Go 中為多部分錶單中的各個欄位設定自訂 Content-Type 標頭?

如何在 Go 中為多部分錶單中的各個欄位設定自訂 Content-Type 標頭?

Linda Hamilton
Linda Hamilton原創
2024-10-29 19:20:03232瀏覽

How can I set custom Content-Type headers for individual fields in a multipart form in Go?

如何在Go 中編輯多部分錶單的Content-Type 標頭

在Go 中,您可能會遇到需要修改Content -Type 的情況多部分錶單中特定欄位的標頭。雖然 mime/multipart 套件使您能夠輕鬆建立多部分錶單,但它沒有提供為各個欄位設定 Content-Type 標頭的直接方法。

要克服此限制,您可以實現自訂函數,例如以下:

<code class="go">import (
    "mime/multipart"
    "text/template"
)

func CreateAudioFormFile(writer *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 writer.CreatePart(h)
}</code>

此函數可讓您建立具有所需Content-Type 標頭的表單欄位:

<code class="go">writer2 := multipart.NewWriter(buf)
audioFile, _ := CreateAudioFormFile(writer2, "helloWorld.wav")
io.Copy(audioFile, file)</code>

此程式碼將產生具有以下標頭的多部分錶單:

--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732
Content-Disposition: form-data; name="file"; filename="helloWorld.wav"
Content-Type: audio/wav;rate=8000
--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732--

建立文件資料後不要忘記將其寫入字段,如提供的原始範例所示。

以上是如何在 Go 中為多部分錶單中的各個欄位設定自訂 Content-Type 標頭?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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