日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Golang 调用http 文件上传接口 进行上传文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

遠(yuǎn)程服務(wù)器有一個(gè)文件上傳接口,文件用于保存到服務(wù)器本地,用go如何調(diào)用此接口將文件上傳至服務(wù)器?

首先,文件上傳請求方 與 接收方 要協(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)建一個(gè)空文件dst, er:= os.Create("static/uploadfiles/" + part.FileName())if er != nil {return t.BadRequest(err.Error())}defer dst.Close()//將獲取到的文件復(fù)制 給 創(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("上傳錯(cuò)誤:" + err.Error())}bodyBuffer := &bytes.Buffer{}bodyWriter := multipart.NewWriter(bodyBuffer)fileWriter, _ := bodyWriter.CreateFormFile("files", header.Filename)io.Copy(fileWriter, file) //將 客戶端文件 復(fù)制給 用于傳輸?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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。