国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Golang - go Http Post 發(fā)送文件流案例

go Http Post 發(fā)送文件流案例

2021-03-07 00:46中國(guó)流浪貓 Golang

這篇文章主要介紹了go Http Post 發(fā)送文件流案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

我就廢話不多說(shuō)了,大家還是直接看代碼吧~

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package main
import (
 "net/http"
 "net/url"
 "fmt"
 "io/ioutil"
 _ "io"
 "bytes"
)
func main() {
 postFile()
}
func post() {
  //這是一個(gè)Post 參數(shù)會(huì)被返回的地址
  strinUrl:="http://localhost:8080/aaa"`這里寫(xiě)代碼片`
  resopne,err:= http.PostForm(strinUrl,url.Values{"num":{"456"},"num1":{"123"}})
  if err !=nil {
  fmt.Println("err=",err)
  }
  defer func() {
   resopne.Body.Close()
   fmt.Println("finish")
  }()
  body,err:=ioutil.ReadAll(resopne.Body)
  if err!=nil {
   fmt.Println(" post err=",err)
  }
  fmt.Println(string(body))
}
func postFile(){
 //這是一個(gè)Post 參數(shù)會(huì)被返回的地址
 strinUrl:="http://localhost:8080/aaa"
 byte,err:=ioutil.ReadFile("post.txt")
 resopne,err :=http.Post(strinUrl,"multipart/form-data",bytes.NewReader(byte))
 if err !=nil {
  fmt.Println("err=",err)
 }
 defer func() {
  resopne.Body.Close()
  fmt.Println("finish")
 }()
 body,err:=ioutil.ReadAll(resopne.Body)
 if err!=nil {
  fmt.Println(" post err=",err)
 }
 fmt.Println(string(body))
}

水滴石穿。這里把Go Http Post 參數(shù)的函數(shù)也貼了處理主要對(duì)比兩者不同之處。

補(bǔ)充:golang爬蟲(chóng) 模擬各種情況的post請(qǐng)求 文件上傳

go實(shí)現(xiàn)各種類(lèi)型的post請(qǐng)求

請(qǐng)求測(cè)試地址

?
1
2
3
4
5
6
7
8
var (
 requestPostURL string = "http://httpbin.org/post"
 // 接收文件的服務(wù)自己實(shí)現(xiàn)qwq
 // 接收一張圖片上傳 postman的key file
 imagePostURL  string = "/imageUpload/upload"
 // 接收多張圖片上傳 postman的key file
 imageMultiPostURL string = "/imageUpload/uploads"
)

application/x-www-from-urlencoded

 

說(shuō)明

application/x-www-from-urlencoded,會(huì)將表單內(nèi)的數(shù)據(jù)轉(zhuǎn)換為鍵值對(duì),比如,name=java&age = 23

示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//
func postXWwwFromURLEncoded() {
 client := http.Client{}
 // 不帶任何的請(qǐng)求數(shù)據(jù)post
 // req, err := http.NewRequest(http.MethodPost, requestPostURL, nil)
 // 帶數(shù)據(jù)
 urlValues := url.Values{}
 urlValues.Add("name", "張三")
 urlValues.Add("age", "18")
 reqBody := urlValues.Encode()
 req, err := http.NewRequest(http.MethodPost, requestPostURL, strings.NewReader(reqBody))
 if err != nil {
 log.Println("err")
 }
 resp, err := client.Do(req)
 if err != nil {
 log.Println("err")
 }
 defer resp.Body.Close()
 b, err := ioutil.ReadAll(resp.Body)
 if err != nil {
 log.Println("err")
 }
 fmt.Println(string(b))
 // urlValues := url.Values{}
 // urlValues.Add("name","zhaofan")
 // urlValues.Add("age","22")
 // resp, _ := http.PostForm("http://httpbin.org/post",urlValues)
}

raw

 

說(shuō)明

// 也就是入?yún)⒎绞綖閖son

// 可以上傳任意格式的文本,可以上傳text、json、xml、html

示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func postRaw() {
 client := http.Client{}
 // 帶數(shù)據(jù) json 類(lèi)型
 urlValues := map[string]interface{}{
 "name":  "jack",
 "age":  18,
 "is_active": true,
 }
 b1, _ := json.Marshal(&urlValues)
 // b1, _ := json.Marshal(&urlValues)
 req, err := http.NewRequest(http.MethodPost, requestPostURL, bytes.NewReader(b1))
 if err != nil {
 log.Println("err")
 }
 resp, err := client.Do(req)
 if err != nil {
 log.Println("err")
 }
 defer resp.Body.Close()
 b, err := ioutil.ReadAll(resp.Body)
 if err != nil {
 log.Println("err")
 }
 fmt.Println(string(b))
}

multipart/form-data 帶普通參數(shù)

 

說(shuō)明

// multipart/form-data

// 既可以上傳文件,也可以上傳鍵值對(duì)

// 上傳的字段是文件時(shí),會(huì)有Content-Type來(lái)說(shuō)明文件類(lèi)型;content-disposition

// 可以上傳多個(gè)文件

示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// multipart/form-data 帶普通參數(shù) key-value
func postFormDataWithParams() {
 client := http.Client{}
 // 不帶任何的請(qǐng)求數(shù)據(jù)post
 body := &bytes.Buffer{}
 writer := multipart.NewWriter(body)
 params := map[string]string{
 "name": "zhangsan",
 "age": "12",
 }
 for key, val := range params {
 _ = writer.WriteField(key, val)
 }
 writer.Close()
 req, err := http.NewRequest(http.MethodPost, requestPostURL, body)
 if err != nil {
 log.Println("err")
 }
 resp, err := client.Do(req)
 if err != nil {
 log.Println("err")
 }
 defer resp.Body.Close()
 b, err := ioutil.ReadAll(resp.Body)
 if err != nil {
 log.Println("err")
 }
 fmt.Println(string(b))
}

multipart/form-data 上傳一個(gè)文件

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// key:file 里面放一個(gè)文件
// multipart/form-data 傳一個(gè)文件
func postFormDataWithSingleFile() {
 client := http.Client{}
 bodyBuf := &bytes.Buffer{}
 bodyWrite := multipart.NewWriter(bodyBuf)
 file, err := os.Open("./images/img.jpg")
 defer file.Close()
 if err != nil {
 log.Println("err")
 }
 // file 為key
 fileWrite, err := bodyWrite.CreateFormFile("file", "img.jpg")
 _, err = io.Copy(fileWrite, file)
 if err != nil {
 log.Println("err")
 }
 bodyWrite.Close() //要關(guān)閉,會(huì)將w.w.boundary刷寫(xiě)到w.writer中
 // 創(chuàng)建請(qǐng)求
 contentType := bodyWrite.FormDataContentType()
 req, err := http.NewRequest(http.MethodPost, imagePostURL, bodyBuf)
 if err != nil {
 log.Println("err")
 }
 // 設(shè)置頭
 req.Header.Set("Content-Type", contentType)
 resp, err := client.Do(req)
 if err != nil {
 log.Println("err")
 }
 defer resp.Body.Close()
 b, err := ioutil.ReadAll(resp.Body)
 if err != nil {
 log.Println("err")
 }
 fmt.Println(string(b))
}

multipart/form-data 上傳多個(gè)文件

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// key:file 里面放多個(gè)文件
// multipart/form-data 傳多個(gè)文件
func postFormDataWithMultipartFile() {
 client := http.Client{}
 bodyBuf := &bytes.Buffer{}
 bodyWrite := multipart.NewWriter(bodyBuf)
 images := []string{"img.jpg", "img1.jpg"}
 for _, val := range images {
 file, err := os.Open("./images/" + val)
 defer file.Close()
 if err != nil {
 log.Println("err")
 }
 fileWrite, err := bodyWrite.CreateFormFile("file", val)
 _, err = io.Copy(fileWrite, file)
 if err != nil {
 log.Println("err")
 }
 }
 bodyWrite.Close() //要關(guān)閉,會(huì)將w.w.boundary刷寫(xiě)到w.writer中
 // 創(chuàng)建請(qǐng)求
 req, err := http.NewRequest(http.MethodPost, imagePostURL, bodyBuf)
 if err != nil {
 log.Println("err")
 }
 // 設(shè)置頭
 contentType := bodyWrite.FormDataContentType()
 req.Header.Set("Content-Type", contentType)
 resp, err := client.Do(req)
 if err != nil {
 log.Println("err")
 }
 defer resp.Body.Close()
 b, err := ioutil.ReadAll(resp.Body)
 if err != nil {
 log.Println("err")
 }
 fmt.Println(string(b))
}

binary

 

?
1
2
3
4
// Content-Type:application/octet-stream,從字面意思得知,只可以上傳二進(jìn)制數(shù)據(jù),通常用來(lái)上傳文件,
// 由于沒(méi)有鍵值,所以,一次只能上傳一個(gè)文件
func postBinary() {
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://blog.csdn.net/a41888313/article/details/78079546

延伸 · 閱讀

精彩推薦
  • GolangGolang通脈之?dāng)?shù)據(jù)類(lèi)型詳情

    Golang通脈之?dāng)?shù)據(jù)類(lèi)型詳情

    這篇文章主要介紹了Golang通脈之?dāng)?shù)據(jù)類(lèi)型,在編程語(yǔ)言中標(biāo)識(shí)符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語(yǔ)言中標(biāo)識(shí)符允許由...

    4272021-11-24
  • Golanggolang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,...

    helight2992020-05-14
  • GolangGolang中Bit數(shù)組的實(shí)現(xiàn)方式

    Golang中Bit數(shù)組的實(shí)現(xiàn)方式

    這篇文章主要介紹了Golang中Bit數(shù)組的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    天易獨(dú)尊11682021-06-09
  • Golanggolang如何使用struct的tag屬性的詳細(xì)介紹

    golang如何使用struct的tag屬性的詳細(xì)介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細(xì)介紹,從例子說(shuō)起,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看...

    Go語(yǔ)言中文網(wǎng)11352020-05-21
  • Golanggolang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 ...

    李浩的life12792020-05-27
  • Golanggolang 通過(guò)ssh代理連接mysql的操作

    golang 通過(guò)ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過(guò)ssh代理連接mysql的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    a165861639710342021-03-08
  • Golanggo語(yǔ)言制作端口掃描器

    go語(yǔ)言制作端口掃描器

    本文給大家分享的是使用go語(yǔ)言編寫(xiě)的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggo日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    go日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號(hào)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    SmallQinYan12302021-02-02
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 91.成人天堂一区 | 亚洲欧美日韩精品久久亚洲区 | 欧美特级 | 毛片一级在线观看 | 欧美一级在线观看 | 免费日韩| 欧美一区二区三区在线视频 | 欧洲精品一区 | 国产精品18久久久久久首页狼 | 免费一级黄色毛片 | 中文字幕在线观看av | 国产黄色免费观看 | 欧美精品一区在线 | 久久综合久色欧美综合狠狠 | 精品一区二区三区四区五区 | 免费黄色网止 | 久久首页 | 国产剧情一区二区 | 狠狠干夜夜 | 一级二级在线观看 | 自拍偷拍在线视频 | 欧美激情网 | 日韩精品久久久久久 | 成人伊人 | 好吊色欧美一区二区三区四区 | 欧美一级特黄aaaaaa | 国产精品美女www爽爽爽软件 | 午夜夜| 久草成人网 | 久草成人| 依依成人综合网 | 国产精品美女久久久久久久久久久 | 国产精品永久免费视频 | 岛国搬运工av在线播放 | 欧美视频在线一区 | 午夜视频网 | 免费网站看v片在线a | 国产精品久久久久久久久久久久久 | 午夜视频在线观看网站 | 在线a视频| 91免费在线播放 |