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

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

Patricia Arquette
發布: 2024-10-27 10:23:03
原創
988 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板