婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 對(duì)Golang中的FORM相關(guān)字段理解

對(duì)Golang中的FORM相關(guān)字段理解

熱門標(biāo)簽:評(píng)價(jià)高的400電話辦理 excel地圖標(biāo)注分布數(shù)據(jù) 電話機(jī)器人軟件免費(fèi) 涿州代理外呼系統(tǒng) 百度地圖標(biāo)注后傳給手機(jī) 壽光微信地圖標(biāo)注 阿克蘇地圖標(biāo)注 外呼系統(tǒng)用什么卡 外呼系統(tǒng)顯本地手機(jī)號(hào)

Form 字段

通過(guò)調(diào)用Request結(jié)構(gòu)體提供的方法,我們可以將URL、Body、或者以上兩者的數(shù)據(jù)提取到該結(jié)構(gòu)體的Form、PostForm和MultipartForm等字段中。

(1)調(diào)用ParseForm方法或者ParseMultipartForm方法,對(duì)請(qǐng)求進(jìn)行分析

(2)訪問(wèn)相應(yīng)的字段

事例:

package main
import (
 "net/http"
 "fmt"
)
func process(w http.ResponseWriter, r *http.Request) {
 r.ParseForm()
 //ParseForm 對(duì)請(qǐng)求進(jìn)行語(yǔ)法分析
 fmt.Fprintln(w,r.MultipartForm)
}
func main() {
 server := http.Server{
  Addr:"127.0.0.1:8080",
 }
 http.HandleFunc("/process",process)
 server.ListenAndServe()
}

創(chuàng)建一個(gè)具體表單

!DOCTYPE html>
html>
head>
 meta  http-equiv="Content-Type" content="text/html; charset=utf-8" />
 title>GoWebPrograming/title>
/head>
body>
 form action="http://127.0.0.1:8080/process?hello=worldthread=get"
 method="post" enctype="application/x-www-form-urlencoded">
  input type="text" name="hello"  value="你好 世界"/>
  input type="text" name="post" value="456" />
  input type="submit" />
 /form>
/body>
/html>

我們?cè)跒g覽器運(yùn)行html文件,結(jié)果為:

map[hello:[你好 世界 world] post:[456] thread:[get]]

我們發(fā)現(xiàn)這個(gè)結(jié)構(gòu)是一個(gè)map,他的鍵為字符串,而建的值是由字符串組成的一個(gè)切片。

這個(gè)結(jié)構(gòu)總是包含查詢的值hello=world, thread=get,還有表單值hello=123和post=456,這些值都進(jìn)行了url的解碼。

比如你好世界之間有空格,說(shuō)明不是編碼之后的%20。

PostForm 字段

執(zhí)行語(yǔ)句r.Form[“post”]會(huì)返回一個(gè)切片,切片里包含了表單提交的數(shù)據(jù)和url中的數(shù)據(jù)就像“你好世界”和“world” 是一組切片值。但是表單值在切片中總會(huì)排在url之前。 ( hello:[你好 世界 world] )

如果我們只想獲得表單值而不是url的值,我們可以使用Request結(jié)構(gòu)的PostForm字段,

我們將r.Form 改為 r.PostForm 會(huì)出現(xiàn)如下結(jié)果

map[hello:[你好 世界] post:[456]]

我們將 enctype="application/x-www-form-urlencoded"改為 enctype=“multipart/form-data”, 結(jié)果如下:

map[]

會(huì)得到一個(gè)空的map,這是為什么呢???

如果我們將 enctype="application/x-www-form-urlencoded"改為 enctype=“multipart/form-data”,并改回 r.Form。會(huì)出現(xiàn)以下結(jié)果:

map[hello:[world] thread:[get]]

這是因?yàn)镻arseForm字段只支持"application/x-www-form-urlencoded"編碼,所以r.Form不會(huì)反悔任何表單值,而是只返回url的查詢值。

為了解決這個(gè)問(wèn)題,我們需要通過(guò)MultipartForm字段來(lái)獲取multipart/form-data編碼的表單值。

補(bǔ)充:go通過(guò)http發(fā)送form-data

首先是獲取form-data內(nèi)容

func ResendFormFile(r *http.Request, URL string) {
 data := r.FormValue("data")
 formFile, fileHeader, err := r.FormFile("pic")
 if err != nil {
  return
 }
 _, status := RequestPost(formFile, fileHeader.Filename, []byte(data), URL)
 if (status / 100) != 2 {
  fmt.Println("轉(zhuǎn)發(fā)圖片失敗")
 }
 return
}

然后是發(fā)送

func RequestPost(formFile multipart.File, filename string, data []byte, postURL string) (resp interface{}, status int) {
 buf := new(bytes.Buffer)
 w := multipart.NewWriter(buf)
 if fw, err := w.CreateFormField("data"); err == nil {
  fw.Write(data)
 }
 if createFormFile, err := w.CreateFormFile("pic", filename); err == nil {
  readAll, _ := ioutil.ReadAll(formFile)
  createFormFile.Write(readAll)
 }
 w.Close()
 req, err := http.NewRequest(http.MethodPost, postURL, buf)
 if err != nil {
  return
 }
 // Don't forget to set the content type, this will contain the boundary.
 req.Header.Set("Content-Type", w.FormDataContentType())
 client := http.Client{}
 res, err := client.Do(req)
 if err != nil {
  return
 }
 return res.Body, res.StatusCode
}

這樣返回的body是不可以直接json序列化的

可以先使用ioutil讀出來(lái)或者byte.Buffer進(jìn)行中轉(zhuǎn)都是比較簡(jiǎn)單的選擇

func UnmarshalWriter(body io.ReadCloser, w http.ResponseWriter) {
 all, _ := ioutil.ReadAll(body)
 buffer := bytes.NewBuffer(all)
 buffer.WriteTo(w)
}

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

您可能感興趣的文章:
  • golang中json小談之字符串轉(zhuǎn)浮點(diǎn)數(shù)的操作
  • go浮點(diǎn)數(shù)轉(zhuǎn)字符串保留小數(shù)點(diǎn)后N位的完美解決方法
  • 解決Golang中g(shù)oroutine執(zhí)行速度的問(wèn)題
  • 解決golang結(jié)構(gòu)體tag編譯錯(cuò)誤的問(wèn)題
  • golang 實(shí)現(xiàn)Location跳轉(zhuǎn)方式
  • 解決golang post文件時(shí)Content-Type出現(xiàn)的問(wèn)題
  • golang 打印error的堆棧信息操作
  • golang 比較浮點(diǎn)數(shù)的大小方式

標(biāo)簽:梅河口 銅川 蘭州 欽州 汕頭 重慶 吐魯番 雞西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《對(duì)Golang中的FORM相關(guān)字段理解》,本文關(guān)鍵詞  對(duì),Golang,中的,FORM,相關(guān),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《對(duì)Golang中的FORM相關(guān)字段理解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于對(duì)Golang中的FORM相關(guān)字段理解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美一级搡bbbb搡bbbb| 亚洲男人的天堂一区二区| 91丨九色丨尤物| 欧美日韩第一区日日骚| 亚洲综合av网| 色综合久久九月婷婷色综合| 久久久欧美精品sm网站| 青青草97国产精品免费观看| 5月丁香婷婷综合| 日韩成人午夜精品| 日韩欧美一级精品久久| 亚洲一区影音先锋| 国产精品成人网| 在线一区二区三区做爰视频网站| 中文字幕一区二区三区av| 国产一区二区三区日韩| 久久日韩粉嫩一区二区三区 | 亚洲图片欧美综合| 欧美在线一区二区三区| 亚洲一区二区偷拍精品| 亚洲国产高清在线| 91在线高清观看| 不卡视频在线看| 日韩毛片视频在线看| 欧美色爱综合网| 老司机精品视频导航| 久久久91精品国产一区二区三区| 99精品1区2区| 亚洲成av人影院| 久久久青草青青国产亚洲免观| 日韩欧美精品在线视频| 日韩欧美电影在线| 久久综合精品国产一区二区三区| 久久人人超碰精品| 国产精品三级视频| 欧美日本国产视频| 欧美一个色资源| 91麻豆6部合集magnet| 一本到不卡精品视频在线观看| 欧美做爰猛烈大尺度电影无法无天| 在线观看一区二区视频| 欧美二区三区91| 欧美日韩高清一区二区不卡 | 国产精品一区一区| 亚洲精品国产一区二区精华液| 在线电影国产精品| 日韩视频在线你懂得| 26uuu久久天堂性欧美| 欧美国产1区2区| 亚洲国产日日夜夜| 国产精品一区二区黑丝| 99亚偷拍自图区亚洲| 麻豆精品视频在线观看视频| 国产精品久久一卡二卡| 亚洲一区二区三区免费视频| 免费xxxx性欧美18vr| 成人国产亚洲欧美成人综合网| 在线免费观看日韩欧美| 久久久久久久av麻豆果冻| 一个色在线综合| 亚洲欧美色图小说| 蜜臀久久久久久久| 不卡在线视频中文字幕| 3d成人动漫网站| 中文字幕中文字幕中文字幕亚洲无线| 亚洲国产成人高清精品| 国产美女一区二区三区| 欧美片网站yy| ㊣最新国产の精品bt伙计久久| 4438成人网| 精品成人一区二区| 欧美精品丝袜久久久中文字幕| 久久久高清一区二区三区| 亚洲国产日韩精品| 97se亚洲国产综合自在线| 2022国产精品视频| 日韩av一级片| 欧美吞精做爰啪啪高潮| 99国产精品久| 亚洲精品一区二区三区蜜桃下载 | 欧美一区二区不卡视频| 国产精品天天看| 国产精品综合在线视频| 日韩美女视频在线| 日韩高清一区在线| 在线观看一区不卡| 亚洲欧美另类小说| 不卡一区二区在线| 国产精品久久久久久福利一牛影视 | 韩国一区二区在线观看| 国产精品欧美综合在线| 欧美特级限制片免费在线观看| 国产精品无人区| 粉嫩av亚洲一区二区图片| 99久久99久久精品国产片果冻 | 成人午夜在线播放| 成人在线视频首页| 国产婷婷色一区二区三区四区| 久久99国产精品麻豆| 国产成都精品91一区二区三| 欧美变态tickle挠乳网站| 国产午夜精品美女毛片视频| 国产一区二区三区四区五区美女 | 国产精品麻豆网站| 成人性生交大片免费| 国产精品色婷婷久久58| 97精品超碰一区二区三区| 亚洲美女一区二区三区| 日本道免费精品一区二区三区| 亚洲一区国产视频| 日韩一区二区不卡| 国产激情一区二区三区| 欧美日韩国产高清一区二区三区| 亚洲一二三四区| 2020国产精品自拍| 国产乱子伦视频一区二区三区| 国产日韩精品一区二区三区 | 蜜桃久久精品一区二区| 欧美一区二区三区色| 麻豆精品视频在线观看免费| www欧美成人18+| av资源站一区| 偷拍日韩校园综合在线| 91同城在线观看| 一区二区日韩av| 91精品国产免费| 成人av电影在线观看| 亚洲亚洲精品在线观看| 欧美一级日韩一级| 成人黄色一级视频| 亚洲大片一区二区三区| 欧美成va人片在线观看| 99久久精品国产一区二区三区| 亚洲国产视频在线| 国产午夜一区二区三区| 欧美日本一区二区| 成人精品亚洲人成在线| 三级在线观看一区二区 | 国产sm精品调教视频网站| 一区二区在线观看免费| 精品国产一区二区三区忘忧草| 91麻豆国产在线观看| 久久99精品久久久久久国产越南| 免费在线观看精品| 91精品国产欧美日韩| 成人免费va视频| 免费在线观看一区| 亚洲制服丝袜av| 国产精品日韩成人| 日韩视频一区二区| 欧美熟乱第一页| 99久久er热在这里只有精品66| 久久99久久久久| 亚洲成人午夜影院| 综合久久久久综合| 国产日韩三级在线| 欧美成人猛片aaaaaaa| 色悠久久久久综合欧美99| 国产毛片精品国产一区二区三区| 视频一区国产视频| 亚洲一区二区免费视频| 中文字幕国产一区| 久久婷婷色综合| 日韩精品中午字幕| 欧美日韩国产经典色站一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品一区三区| 5566中文字幕一区二区电影| 欧美综合久久久| 色94色欧美sute亚洲13| 成人高清在线视频| 懂色av中文字幕一区二区三区| 麻豆精品视频在线| 麻豆成人久久精品二区三区红 | 欧美大白屁股肥臀xxxxxx| 在线亚洲一区二区| 色诱视频网站一区| 色狠狠桃花综合| 欧美色综合天天久久综合精品| 色综合激情五月| 欧美主播一区二区三区美女| 精品视频一区 二区 三区| 欧美视频三区在线播放| 日本精品视频一区二区三区| 在线一区二区三区做爰视频网站| 欧美综合欧美视频| 在线观看91av| 久久一区二区三区四区| 久久老女人爱爱| 国产精品久久久久影院色老大 | 精品国产一区久久| 欧美激情一区不卡| 亚洲女同一区二区| 亚洲v中文字幕| 极品美女销魂一区二区三区免费| 国产在线播放一区三区四| 国内精品免费**视频| 成人av资源在线观看| 欧洲一区在线观看| 欧美va在线播放|