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

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

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

熱門(mé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
    8v天堂国产在线一区二区| 精品中文字幕一区二区小辣椒| 懂色av中文字幕一区二区三区| 久久久亚洲精华液精华液精华液 | 自拍偷自拍亚洲精品播放| eeuss影院一区二区三区| 亚洲视频小说图片| 欧美福利视频导航| 韩国av一区二区三区| 国产精品久久久久aaaa| 一本一道综合狠狠老| 五月激情丁香一区二区三区| 欧美一区二区三区视频免费播放| 国产一区二区免费在线| 中文字幕五月欧美| 欧美日韩一区中文字幕| 韩国v欧美v亚洲v日本v| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 成人高清免费观看| 亚洲伊人伊色伊影伊综合网| 91精品国产综合久久香蕉的特点| 韩国成人福利片在线播放| 亚洲色图视频网| 91精品黄色片免费大全| aaa欧美色吧激情视频| 日韩精品免费专区| 国产精品免费久久久久| 欧美日韩精品一区二区三区蜜桃| 国产在线精品一区在线观看麻豆| 亚洲摸摸操操av| 久久综合色鬼综合色| 在线观看三级视频欧美| 国产毛片精品视频| 舔着乳尖日韩一区| 综合色中文字幕| 久久久久久亚洲综合影院红桃| 欧美亚洲高清一区| 国产福利一区二区三区| 三级在线观看一区二区 | 日本一区二区三区视频视频| 欧美情侣在线播放| 99久久99久久精品免费观看| 久草中文综合在线| 亚洲va欧美va国产va天堂影院| 国产精品乱人伦中文| 欧美mv日韩mv亚洲| 欧美精品欧美精品系列| 91在线免费看| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲色图一区二区三区| 欧美国产日本视频| 久久亚区不卡日本| 日韩欧美一二区| 欧美男女性生活在线直播观看| 91色九色蝌蚪| 丁香桃色午夜亚洲一区二区三区| 九九久久精品视频| 久久99精品网久久| 麻豆精品新av中文字幕| 午夜久久福利影院| 亚洲成精国产精品女| 一区二区三区不卡视频在线观看| 日韩一区欧美小说| 中文字幕一区二区三区色视频 | 午夜精品久久久久久久久久久| 中文幕一区二区三区久久蜜桃| 久久久久久久久蜜桃| 久久一留热品黄| 久久女同性恋中文字幕| 欧美精品一区二区三区在线播放| 欧美成人免费网站| 26uuu久久天堂性欧美| 亚洲精品一区在线观看| 久久午夜色播影院免费高清| 久久久亚洲国产美女国产盗摄 | 一区二区三区在线观看国产| 亚洲精品国产品国语在线app| 亚洲免费av网站| 亚洲一二三区不卡| 午夜精品久久一牛影视| 日本亚洲一区二区| 久久成人18免费观看| 国产黄色精品网站| 成人激情av网| 精品婷婷伊人一区三区三| 91精品国产福利| 久久综合久久综合亚洲| 国产精品萝li| 亚洲一卡二卡三卡四卡五卡| 青青草视频一区| 国产成人av一区二区| 9人人澡人人爽人人精品| 在线观看av不卡| 精品精品欲导航| 国产精品久久久久影视| 亚洲午夜视频在线| 麻豆国产欧美日韩综合精品二区| 国产又黄又大久久| 99精品视频一区| 欧美一区二区三区视频在线观看| 久久影院午夜论| 亚洲老妇xxxxxx| 激情图区综合网| 色狠狠色狠狠综合| 欧美精品一区二区久久婷婷| 亚洲色图在线视频| 捆绑调教美女网站视频一区| 不卡一区二区中文字幕| 欧美日韩国产免费一区二区| 国产香蕉久久精品综合网| 亚洲一级二级三级在线免费观看| 久久精品国产秦先生| 色av成人天堂桃色av| 精品国产髙清在线看国产毛片| 一区在线播放视频| 蜜臀av一区二区三区| heyzo一本久久综合| 91精品国产麻豆国产自产在线 | 欧美日韩一本到| 久久久噜噜噜久噜久久综合| 亚洲成人你懂的| 不卡在线观看av| 久久综合五月天婷婷伊人| 亚洲午夜久久久久中文字幕久| 国产精品99久久久久久似苏梦涵| 欧美美女一区二区| 亚洲欧美日韩一区二区三区在线观看| 蜜芽一区二区三区| 欧美性大战久久| 国产精品卡一卡二| 国精产品一区一区三区mba桃花 | 不卡一区二区在线| 精品久久久久99| 性久久久久久久| 日本高清免费不卡视频| 国产日产欧产精品推荐色| 久久精品国产亚洲一区二区三区| 欧美丝袜丝交足nylons图片| 亚洲欧洲www| www.综合网.com| 国产视频一区二区在线| 国产在线精品国自产拍免费| 欧美电影免费观看高清完整版在 | 一级日本不卡的影视| 成人性生交大片免费看中文网站| 2023国产精华国产精品| 蜜桃一区二区三区四区| 91精品国产欧美日韩| 日韩精品午夜视频| 在线播放欧美女士性生活| 午夜av区久久| 欧美猛男超大videosgay| 亚洲一区免费在线观看| 91色porny| 亚洲图片自拍偷拍| 欧美图片一区二区三区| 午夜影视日本亚洲欧洲精品| 在线亚洲人成电影网站色www| 亚洲美女屁股眼交3| 一本一本久久a久久精品综合麻豆| 国产精品视频第一区| 99视频有精品| 亚洲一区欧美一区| 欧美久久久久久久久| 免费日本视频一区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 91精品国产色综合久久| 奇米精品一区二区三区四区| 日韩欧美的一区| 国产精品1024久久| 亚洲人亚洲人成电影网站色| 在线精品观看国产| 亚洲成人av电影在线| 日韩欧美亚洲一区二区| 国产大陆a不卡| 成人欧美一区二区三区小说| 在线观看91精品国产入口| 午夜成人在线视频| 久久―日本道色综合久久| 成人毛片视频在线观看| 一区二区三区视频在线观看| 欧美欧美欧美欧美| 国产一区二区三区综合| 国产精品久久久久久福利一牛影视 | 最近中文字幕一区二区三区| 欧美一a一片一级一片| 奇米影视一区二区三区| 国产三区在线成人av| 色综合久久久久| 蜜桃精品在线观看| 亚洲欧洲日韩一区二区三区| 欧美三日本三级三级在线播放| 精品影院一区二区久久久| 国产精品久久久久久久久免费樱桃 | 成人a级免费电影| 日韩精品国产精品| 中文字幕制服丝袜成人av| 69av一区二区三区| av午夜精品一区二区三区|