Golang 调用http 文件上传接口 进行上传文件

时间:2025-03-03 06:59:31

远程服务器有一个文件上传接口,文件用于保存到服务器本地,用go如何调用此接口将文件上传至服务器?

首先,文件上传请求方 与 接收方 要协调工作(解析等工作) 

接收方:


func UploadFileToLocal(c ) error {
	r := ()  //无论用的什么路由,原理是要从request获取数据
	t := (c)
	reader, err := () //request 获得文件 reader
	if err != nil {
		return (())
	}
	if reader == nil {
		return (`未接受到文件`)
	}
    //遍历操作 获得的
	for {
		part, err := ()
		if err ==  {
			break
		}
		("FileName=[%s],FormName[%s]\n",(),())
		if () == "" {
			data, _ := (part)
			("FormData=[%s]\n", string(data))
            continue
		} else {
            //创建一个空文件
			dst, er:= ("static/uploadfiles/" + ())
			if er != nil {
				return (())
			}
			defer ()
            //将获取到的文件复制 给 创建的文件
			_,err := (dst, part)
			if err != nil {
				return (())
			}
		}
	}
	 return (`OK`)
}

请求方:

func SendFile(c ) error{
	t := (c)
	r := ()
	file, header, err := ("file") // 获得客户端传来的 文件 file
	if err != nil {
		return ("上传错误:" + ())
	}

	bodyBuffer := &{}
	bodyWriter := (bodyBuffer)
	fileWriter, _ := ("files", )
	(fileWriter, file) //将 客户端文件 复制给 用于传输的 fileWriter
	contentType := () //contentType
	()
	ip :=  //配置
	resp, _ := ("http://"+ip+"/uploadToLocal/"+, contentType, bodyBuffer)
	defer ()
	resp_body, _ := ()

	if  == `200 OK` {
		return (string(resp_body))
	}else {
		return (string(resp_body))
	}
}