Golang 后端发起上传文件Post

Golang 后端发起上传文件Post

func GetPutFile() {
    
    url := `https://api.q.qq.com/api/`

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)

    // 添加表单字段
    writer.WriteField("access_token", "1245")
    writer.WriteField("appid",  "1245")
    // 添加文件字段
    file, err := os.Open("./flie/1234.jpg") // 图片路径
    if err != nil {
        fmt.Println("无法打开文件:", err)
    }
    defer file.Close()

    part, err := writer.CreateFormFile("media", file.Name())
    if err != nil {
        fmt.Println("无法创建表单字段:", err)
    }
    _, err = io.Copy(part, file)
    if err != nil {
        fmt.Println("无法复制文件:", err)
    }

    // 完成表单的创建并获取结果
    writer.Close()

    // 发起POST请求
    resp, err := http.Post(url, writer.FormDataContentType(), body) // 目标服务器的URL
    if err != nil {
        fmt.Println("请求发送失败:", err)
    }
    // 设置请求头 Content-Type
    resp.Header.Set("Content-Type", writer.FormDataContentType())
    defer resp.Body.Close()

    // 处理响应结果
    fmt.Println("响应状态码:", resp.StatusCode)
    fmt.Println(body.String())
    
    jsons, err := io.ReadAll(resp.Body)

    type Obj struct {
        ErrCode int    `json:"errCode"`
        ErrMsg  string `json:"errMsg"`
    }
    var Objs Obj
    json.Unmarshal([]byte(jsons), &Objs)
    fmt.Println(Objs)
}
249 Views
分享你的喜爱
linwute
linwute

我要像梦一样自由,像大地一样宽容;
在艰辛放逐的路上,点亮生命的光芒;
我要像梦一样自由,像天空一样坚强;
在曲折蜿蜒的路上,体验生命的意义;

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注