远程服务器有一个文件上传接口,文件用于保存到服务器本地,用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))
}
}