post 上传文件
//在上传文件的实例中,bodyWrite不能在http.DO()之后 ,也就是这里的Client.Do())
func HttpFileFunction(Url, file_name string) (resp *http.Response, err error) {
bodyBuf := &bytes.Buffer{}
bodyWrite := multipart.NewWriter(bodyBuf)
if err != nil {
fmt.Println("create form file", err)
return
}
file, err := os.Open("photos\\" + file_name)
defer file.Close()
if err != nil {
fmt.Println("加载文件失败", err)
return
}
fileWrite, err := bodyWrite.CreateFormFile("file", file_name)
_,err = io.Copy(fileWrite,file)
if err != nil {
fmt.Println("io Copy error",err)
return
}
contentType := bodyWrite.FormDataContentType()
bodyWrite.Close() //正确位置 ✓
request, err := http.NewRequest("POST", Url, bodyBuf)
if err != nil {
fmt.Println("http newrequest error",err)
return
}
request.Header.Set("Content-Type", contentType)
for _, value := range Cookies {
fmt.Println("cookie", value)
request.AddCookie(value)
}
fmt.Println(request.ContentLength)
resp, err = Client.Do(request)
//bodyWrite.Close() //错误位置 ✘
//在上传时,会提示真实长度和提交的长度不符合
if err != nil {
return
}
for _, value := range resp.Cookies() {
Cookies = append(Cookies, value)
}
return
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于