package main
import (
"bytes"
"fmt"
"io/ioutil"
"mime/multipart"
"net/http"
)
func main() {
var buff bytes.Buffer
// 创建一个Writer
writer := multipart.NewWriter(&buff)
// 写入一般的表单字段
writer.WriteField("key", "value")
// 写入图片字段
// CreateFormFile第一个参数是 表单对应的字段名
// 第二个字段是对应上传文件的名称
w, err := writer.CreateFormFile("img", "test.png")
if err != nil {
fmt.Println("创建文件失败: ", err)
return
}
data, err := ioutil.ReadFile("test.png")
if err != nil {
fmt.Println("读取图片发生错误: ", err)
return
}
// 把文件内容写入
w.Write(data)
writer.Close()
// 发送一个POST请求
req, err := http.NewRequest("POST", "http://httpbin.org/post", &buff)
if err != nil {
fmt.Println("创建请求失败: ", err)
}
// 设置你需要的Header
req.Header.Set("Host", "httpbin.org")
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.44")
var client http.Client
// 执行请求
resp, err := client.Do(req)
defer resp.Body.Close()
// 读取返回内容
d, err := ioutil.ReadAll(resp.Body)
if err != nil{
fmt.Println("读取失败")
return
}
fmt.Println(string(d))
}
go 同时上传表单字段和文件
最新推荐文章于 2024-04-01 11:24:15 发布