第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

golang post模擬客戶端多文件上傳以及處理

標(biāo)簽:
Go

为了模拟客户端和服务器端,我这儿开了两个进程,进程A(监听地址:http://192.168.50.250:8080 路由/objects)进程B(监听地址:http://192.168.50.250:8081 路由:/objetcs)方法都是post。进程A是监听客户上传的文件,然后模拟http clien上传给进程B。在B中将文件存储或者将内容打印。

进程A  post /ojects:

func PostFile(c *gin.Context){

    var b bytes.Buffer
    w := multipart.NewWriter(&b)
    c.Request.ParseMultipartForm(100000)
    multiPartform ,_:= c.MultipartForm()
        err := utils.CreatFormFiles(&b,multiPartform,w)        if err != nil{
        fmt.Println(err)        return
    }
    request,err:=http.NewRequest(http.MethodPost,"http://192.168.50.250:8081/objects",&b)    if err != nil{
        fmt.Println(err)        return
    }    //模拟客户端请求,还可以在request.Form中添加其他信息,如username,password等key_values
    client := http.Client{Timeout:5*time.Second}
    request.Header.Set("Content-Type",w.FormDataContentType())
    resp,err := client.Do(request)    if err != nil{
        fmt.Println(err)        return
    }
    handlers.SendRespense(c,resp.StatusCode,"ok")
}

CreatFormFiles:

func CreatFormFiles(b *bytes.Buffer,form *multipart.Form,w *multipart.Writer)error{    for name,files := range form.File{        for _,file := range files{
            f,err := file.Open()            if err != nil{                return err
            }
            fw,err := w.CreateFormFile(name,file.Filename)            if err != nil{                return err
            }
            _,err = io.Copy(fw,f)            if err != nil{                return err
            }
        }
    }
    w.Close()  //要关闭,会将w.w.boundary刷写到w.writer中
    return nil}

进程B post /obcjetcs:

c.Header("Access-Control-Allow-Origin", "*")
    c.Header("Access-Control-Allow-Methods", "GET,POST,PUT,PATCH,DELETE,OPTIONS")
    c.Header("Access-Control-Allow-Headers", "authorization, origin, content-type, accept")
    c.Header("Allow", "HEAD,GET,POST,PUT,PATCH,DELETE,OPTIONS")
    c.Header("Content-Type", "multipart/form-data")
    c.Request.ParseMultipartForm(5000000)
    form,err := c.MultipartForm()    if err != nil{
        c.JSON(500,"bad form")
    }
    fheaders := form.File["upload"]    for _,fheader := range fheaders{
        fmt.Printf("name:%s,f:%v","upload",fheader.Filename)
    }
    c.JSON(200,"ok")



这样我们就可以在前端上传多个文件。我这里示范的是在upload这个key里带了三个文件。

webp

image.png



作者:我的饭卡呢
链接:https://www.jianshu.com/p/885bb6ddc6d2


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消