婷婷综合国产,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
    亚洲主播在线观看| 亚洲欧美国产三级| 亚洲高清免费一级二级三级| 欧美日韩和欧美的一区二区| 麻豆免费精品视频| 久久久久国色av免费看影院| 成人黄色国产精品网站大全在线免费观看 | 激情图区综合网| 精品成人一区二区三区四区| av不卡一区二区三区| 一个色综合av| 亚洲精品一区二区精华| 成人激情黄色小说| 亚洲一本大道在线| 欧美精品一区二区三区久久久| 粉嫩av亚洲一区二区图片| 亚洲最大的成人av| 精品久久久久久亚洲综合网 | 亚洲电影激情视频网站| 日韩免费高清电影| 成人教育av在线| 青青草国产精品亚洲专区无| 国产精品理论在线观看| 678五月天丁香亚洲综合网| 国产91丝袜在线观看| 亚洲永久精品大片| 国产欧美日韩视频一区二区| 欧美日本乱大交xxxxx| 成人在线视频一区二区| 五月婷婷欧美视频| 亚洲天堂成人在线观看| 久久综合成人精品亚洲另类欧美| 一本一道综合狠狠老| 经典三级一区二区| 午夜伦欧美伦电影理论片| 国产精品进线69影院| 欧美r级电影在线观看| 欧美影院一区二区| 99久久综合国产精品| 男人的天堂亚洲一区| 亚洲午夜久久久久久久久电影网| 欧美国产成人精品| 7777精品伊人久久久大香线蕉 | 五月天婷婷综合| 国产呦萝稀缺另类资源| 欧美一区二区三区思思人| 日韩精品乱码av一区二区| 精品一二三四区| 久久综合视频网| 欧美理论在线播放| 91免费版pro下载短视频| 国产黄色精品视频| 青青草视频一区| 日韩va亚洲va欧美va久久| 亚洲伊人色欲综合网| 一区二区三区蜜桃网| 日本一区二区综合亚洲| 久久―日本道色综合久久| 7777精品伊人久久久大香线蕉的| 欧美日韩一区不卡| 欧美综合久久久| 色婷婷综合中文久久一本| 国产成人午夜视频| 国产精品一级片| 国产成人av网站| 国产精品一区二区91| 国产成人精品1024| 丁香六月久久综合狠狠色| 粉嫩aⅴ一区二区三区四区| 国产凹凸在线观看一区二区| 高清成人免费视频| 国产宾馆实践打屁股91| 成人动漫精品一区二区| 成人av电影在线网| 99riav一区二区三区| 91色九色蝌蚪| 一本一本久久a久久精品综合麻豆| www..com久久爱| 91蝌蚪porny九色| 91成人在线免费观看| 欧美天天综合网| 欧美三级一区二区| 日韩一区二区三区av| 精品国产伦理网| 中文无字幕一区二区三区| 中文字幕一区二区三中文字幕| 亚洲欧美另类在线| 午夜影院在线观看欧美| 老司机午夜精品| 91精品国产综合久久久久久 | 色呦呦国产精品| 欧美精品xxxxbbbb| 久久一夜天堂av一区二区三区| 国产欧美日韩在线观看| 一区二区三区日韩欧美精品| 亚洲成人久久影院| 久久精品999| 成人在线视频首页| 欧美日韩精品一区二区三区蜜桃| 日韩一级片网站| 国产精品久久久久aaaa樱花| 亚洲bt欧美bt精品777| 国产精品69毛片高清亚洲| 91麻豆免费在线观看| 在线播放91灌醉迷j高跟美女 | 亚洲一区日韩精品中文字幕| 日韩国产在线一| 国产电影一区二区三区| 欧美日韩三级在线| 国产亚洲欧美中文| 一区二区三区精品| 国产在线观看一区二区| 91浏览器打开| 欧美mv日韩mv国产| 亚洲视频每日更新| 麻豆中文一区二区| 色一区在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | wwwwww.欧美系列| 中文字幕在线播放不卡一区| 天堂久久久久va久久久久| 国产不卡视频一区二区三区| 51久久夜色精品国产麻豆| 亚洲欧洲成人av每日更新| 美女脱光内衣内裤视频久久影院| 99视频精品全部免费在线| 欧美成人一区二区三区| 有坂深雪av一区二区精品| 国产美女视频91| 欧美日韩日本视频| 中文字幕av一区 二区| 激情综合色综合久久| 在线免费观看一区| 欧美国产1区2区| 久久99最新地址| 欧美日韩精品一区二区在线播放| 国产精品欧美一区喷水| 九九国产精品视频| 欧美日韩免费一区二区三区视频| 久久亚洲精品国产精品紫薇| 视频在线观看一区| 欧美日韩一区高清| 亚洲欧洲美洲综合色网| 国产成a人亚洲精| 久久综合色之久久综合| 蜜桃视频第一区免费观看| 欧美色综合网站| 亚洲美女区一区| 99久久精品国产一区二区三区| 精品国产91洋老外米糕| 日本三级韩国三级欧美三级| 欧美三级三级三级爽爽爽| 亚洲精品五月天| www.亚洲色图| 国产精品免费久久久久| 国产成人精品亚洲午夜麻豆| 久久久久久久久久久久久女国产乱 | 99久久精品国产一区二区三区| 国产网红主播福利一区二区| 精品一区二区三区免费观看| 91精品国产综合久久蜜臀| 日韩国产在线一| 日韩午夜在线影院| 美女视频黄a大片欧美| 91精品国产综合久久精品图片| 亚洲成va人在线观看| 欧美三级视频在线播放| 亚洲电影中文字幕在线观看| 欧美艳星brazzers| 午夜欧美视频在线观看| 7777精品伊人久久久大香线蕉的 | 麻豆精品在线播放| 日韩丝袜美女视频| 久久se精品一区精品二区| 2019国产精品| 国产.欧美.日韩| 亚洲色图都市小说| 日本乱人伦aⅴ精品| 亚洲国产日韩av| 欧美精品在线观看播放| 三级精品在线观看| 日韩精品一区国产麻豆| 国产69精品久久99不卡| 亚洲乱码日产精品bd| 欧美日韩免费在线视频| 欧美aⅴ一区二区三区视频| 久久久国产午夜精品| 成a人片国产精品| 亚洲国产综合在线| 日韩小视频在线观看专区| 国产成人免费视频网站高清观看视频| 国产精品视频第一区| 一本大道av伊人久久综合| 亚洲成人福利片| 精品粉嫩aⅴ一区二区三区四区| 成人av电影在线网| 视频在线观看国产精品| 中文字幕不卡在线观看| 欧美精品黑人性xxxx| 国产·精品毛片|