golang fasthttp上传文件client和server教程

栏目: Go · 发布时间: 6年前

内容简介:client端实现:

server端实现:

package main
import (
    "fasthttp"
    "io"
    "os"
)
func main(){
    fasthttp.ListenAndServe(":8080",UploadHandler)
}
func UploadHandler(ctx *fasthttp.RequestCtx){
        //根据参数名获取上传的文件
    fileHeader,err := ctx.FormFile("file")
    if err != nil{
        ctx.WriteString(err.Error())
        return
    }
        //打开上传的文件
    file,err := fileHeader.Open()
    if err != nil{
        ctx.WriteString(err.Error())
        return
    }
        //使用完关闭文件
    defer file.Close()
    newFile := "d:\\bbb.txt"     //windows下需要转移反斜线
        //新建一个文件,此处使用默认的txt格式
    nf,err := os.OpenFile(newFile,os.O_APPEND|os.O_CREATE|os.O_RDWR,0666)
    if err != nil{
        ctx.WriteString(err.Error())
        return
    }
        //使用完需要关闭
    defer nf.Close()
        //复制文件内容
    _,err = io.Copy(nf,file)
    if err != nil{
        ctx.WriteString(err.Error())
        return
    }
    ctx.WriteString("success")
}

client端实现:

package main
import (
    "bytes"
    "fasthttp"
    "fmt"
    "io"
    "mime/multipart"
    "os"
    "path"
)
func main(){
        //待上传文件
    uploadFile := "d:\\aaa.txt"
        //新建一个缓冲,用于存放文件内容
    bodyBufer := &bytes.Buffer{}
        //创建一个multipart文件写入器,方便按照http规定格式写入内容
    bodyWriter := multipart.NewWriter(bodyBufer)
        //从bodyWriter生成fileWriter,并将文件内容写入fileWriter,多个文件可进行多次
    fileWriter,err := bodyWriter.CreateFormFile("file",path.Base(uploadFile))
    if err != nil{
        fmt.Println(err.Error())
        return
    }
    file,err := os.Open(uploadFile)
    if err != nil{
        fmt.Println(err)
        return
    }
        //不要忘记关闭打开的文件
    defer file.Close()
    _,err = io.Copy(fileWriter,file)
    if err != nil{
        fmt.Println(err.Error())
    }

        //关闭bodyWriter停止写入数据
    bodyWriter.Close()
    contentType := bodyWriter.FormDataContentType()
        //构建request,发送请求
    request := fasthttp.AcquireRequest()
    request.Header.SetContentType(contentType)
        //直接将构建好的数据放入post的body中
    request.SetBody(bodyBufer.Bytes())
    request.Header.SetMethod("POST")
    request.SetRequestURI("http://localhost:8080/")
    response := fasthttp.AcquireResponse()
    err = fasthttp.Do(request,response)
    if err != nil{
        fmt.Println(err.Error())
        return
    }
    fmt.Println(string(response.Body()))
}

以上所述就是小编给大家介绍的《golang fasthttp上传文件client和server教程》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

A Guide to Monte Carlo Simulations in Statistical Physics

A Guide to Monte Carlo Simulations in Statistical Physics

Landau, David P./ Binder, Kurt / Cambridge Univ Pr / 2005-9 / 786.00元

This new and updated edition deals with all aspects of Monte Carlo simulation of complex physical systems encountered in condensed-matter physics, statistical mechanics, and related fields. After brie......一起来看看 《A Guide to Monte Carlo Simulations in Statistical Physics》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具