go使用mime/multipart包案例

1.multipart实现了MIME的multipart解析,参见RFC 2046。该实现适用于HTTP(RFC 2388)和常见浏览器生成的multipart主体,个人理解期本质就是默认from在网络中传输格式

案例一:普通普通表单上传后端程序

func main() {
	buf:=new(bytes.Buffer)
	bodywriter:=multipart.NewWriter(buf)
	bodywriter.WriteField("name","lisi")
	bodywriter.WriteField("age","40")
	contentType:=bodywriter.FormDataContentType()
	defer bodywriter.Close()
	url:="http://www.shop.com:8088/index/index/aa"
	http.Post(url,contentType,buf)
}

 

案例二:带文件上传的表单上传

package main

import (
    "bytes"
    "fmt"
    "io"
    "io/ioutil"
    "mime/multipart"
    "net/http"
    "os"
)
func postFrom(){

    buf:=new(bytes.Buffer)
    bodywriter:=multipart.NewWriter(buf)
    contentType:=bodywriter.FormDataContentType()
    //字段
    bodywriter.WriteField("name","lisi")
    bodywriter.WriteField("age","40")
    defer bodywriter.Close()
    //文件
    upwriter,_:=bodywriter.CreateFormFile("upload","upload")
    srcFile,_:=os.Open("../1.zip")
    defer srcFile.Close()
    io.Copy(upwriter,srcFile)
    //发送
    url:="http://127.0.0.1:9007/hello"
    req,_:=http.Post(url,contentType,buf)
    data,_:= ioutil.ReadAll(req.Body)
    fmt.Printf("%v",string(data))
}
func main(){
    postFrom()
}

 接收数据内容:

package main

import (
    "fmt"
    "io"
    "log"
    "net/http"
    "os"
)
func hello( w http.ResponseWriter, r * http.Request) {
    // 根据字段名获取表单文件
    formFile, header, err := r.FormFile("upload")//获取上传文件资源
    destFile, err := os.Create(header.Filename)
    if err != nil {
        log.Printf("Create failed: %s\n", err)
        return
    }
    defer formFile.Close()
    defer destFile.Close()
    // 读取表单文件,写入保存文件
    _, err = io.Copy(destFile, formFile)
    if err != nil {
        log.Printf("Write file failed: %s\n", err)
        return
    }
    name:=r.PostFormValue("name")//字段内容
    age:=r.PostFormValue("age")//年龄
    fmt.Println(name,age)
}
func main() {
    http.HandleFunc("/hello",hello)
    err:= http.ListenAndServe("127.0.0.1:9007",nil)
    if err != nil {
        fmt.Print(err)
    }

}

 

posted on 2021-09-23 15:00  孤灯引路人  阅读(736)  评论(0编辑  收藏  举报

导航