Golang mime.multipart 包详解
mime/multipart
包提供了处理多部分 MIME 消息的功能。多部分消息可以包含文本、图片、附件等多种类型的数据。
以下是一个使用 mime/multipart
包创建多部分表单的示例代码:
package main
import (
"bytes"
"fmt"
"mime/multipart"
"os"
"path/filepath"
)
func main() {
var buf bytes.Buffer
// 创建一个 *multipart.Writer
writer := multipart.NewWriter(&buf)
// 添加表单字段
var err error
err = writer.WriteField("username", "johndoe")
if err != nil {
fmt.Println("Error writing field:", err)
return
}
// 添加文件
filePath := "example.txt"
fileWriter, err := writer.CreateFormFile("attachment", filepath.Base(filePath))
if err != nil {
fmt.Println("Error creating form file:", err)
return
}
file, err := os.Open(filePath)
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
_, err = fmt.Fprint(fileWriter, file)
if err != nil {
fmt.Println("Error writing file to form:", err)
return
}
// 结束多部分表单
err = writer.Close()
if err != nil {
fmt.Println("Error closing writer:", err)
return
}
// 输出多部分表单的内容
fmt.Println("Multipart Form:")
fmt.Println(buf.String())
}
这段代码创建了一个多部分表单,包含一个文本字段和一个文件附件。然后关闭了 multipart.Writer
,输出了构建的多部分表单的内容。在实际的 HTTP 请求中,可以将 buf.Bytes()
作为请求体发送。
评论已关闭