golang使用net/http的post请求发送图片
发送post请求需要使用表单提交
package main
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"mime/multipart"
"net/http"
"os"
)
func ocr_post(url string){
buf := new(bytes.Buffer) // 实例化一个结构体
writer := multipart.NewWriter(buf) // 返回一个writer指针
ContentType := writer.FormDataContentType() // 表单提交的格式
formFile, err := writer.CreateFormFile("img", "new.jpg") // 提供表单中的字段名<img>和文件名<new.jpg>,返回值是可写的接口io.Writer
if err != nil {
fmt.Println("Create form file failed: %s\n", err)
}
// 从文件读取数据,写入表单
srcFile, err := os.Open("about_net_http/img_2102310QPE10F3000196.png")
if err != nil {
fmt.Println("%Open source file failed: s\n", err)
}
defer srcFile.Close()
_, err = io.Copy(formFile, srcFile)
if err != nil {
fmt.Println("Write to form file falied: %s\n", err)
}
// 发送
writer.Close() // 发送之前必须调用Close()以写入结尾行
resp,err := http.Post(url,ContentType,buf)
if err != nil {
fmt.Printf("post failed, err:%v\n", err)
return
}
defer resp.Body.Close()
b,err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Printf("get resp failed, err:%v\n", err)
return
}
fmt.Println(string(b))
}