Golang 调用http 文件上传接口 进行上传文件
生活随笔
收集整理的這篇文章主要介紹了
Golang 调用http 文件上传接口 进行上传文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
遠程服務器有一個文件上傳接口,文件用于保存到服務器本地,用go如何調(diào)用此接口將文件上傳至服務器?
首先,文件上傳請求方 與 接收方 要協(xié)調(diào)工作(解析等工作)?
接收方:
func UploadFileToLocal(c echo.Context) error {r := c.Request() //無論用的什么路由,原理是要從request獲取數(shù)據(jù)t := echotools.NewEchoTools(c)reader, err := r.MultipartReader() //request 獲得文件 readerif err != nil {return t.BadRequest(err.Error())}if reader == nil {return t.BadRequest(`未接受到文件`)}//遍歷操作 獲得的for {part, err := reader.NextPart()if err == io.EOF {break}fmt.Printf("FileName=[%s],FormName[%s]\n",part.FileName(),part.FormName())if part.FileName() == "" {data, _ := ioutil.ReadAll(part)fmt.Printf("FormData=[%s]\n", string(data))continue} else {//創(chuàng)建一個空文件dst, er:= os.Create("static/uploadfiles/" + part.FileName())if er != nil {return t.BadRequest(err.Error())}defer dst.Close()//將獲取到的文件復制 給 創(chuàng)建的文件_,err := io.Copy(dst, part)if err != nil {return t.BadRequest(err.Error())}}}return t.OK(`OK`) }請求方:
func SendFile(c echo.Context) error{t := echotools.NewEchoTools(c)r := c.Request()file, header, err := r.FormFile("file") // 獲得客戶端傳來的 文件 fileif err != nil {return t.BadRequest("上傳錯誤:" + err.Error())}bodyBuffer := &bytes.Buffer{}bodyWriter := multipart.NewWriter(bodyBuffer)fileWriter, _ := bodyWriter.CreateFormFile("files", header.Filename)io.Copy(fileWriter, file) //將 客戶端文件 復制給 用于傳輸?shù)?fileWritercontentType := bodyWriter.FormDataContentType() //contentTypebodyWriter.Close()ip := config.Opts.UploadServerAddr //配置resp, _ := http.Post("http://"+ip+"/uploadToLocal/"+header.Filename, contentType, bodyBuffer)defer resp.Body.Close()resp_body, _ := ioutil.ReadAll(resp.Body)if resp.Status == `200 OK` {return t.OK(string(resp_body))}else {return t.BadRequest(string(resp_body))} }?
總結(jié)
以上是生活随笔為你收集整理的Golang 调用http 文件上传接口 进行上传文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gtx1060 3g和6g性能差距 gt
- 下一篇: 制度的重要性