内容简介:为了模拟客户端和服务器端,我这儿开了两个进程,进程A(监听地址:http://192.168.50.250:8080 路由/objects)进程B(监听地址:http://192.168.50.250:8081 路由:/objetcs)方法都是post。进程A是监听客户上传的文件,然后模拟http clien上传给进程B。在B中将文件存储或者将内容打印。CreatFormFiles:这样我们就可以在前端上传多个文件。我这里示范的是在upload这个key里带了三个文件。
为了模拟客户端和服务器端,我这儿开了两个进程,进程A(监听地址:http://192.168.50.250:8080 路由/objects)进程B(监听地址:http://192.168.50.250:8081 路由:/objetcs)方法都是post。进程A是监听客户上传的文件,然后模拟http clien上传给进程B。在B中将文件存储或者将内容打印。
进程A post /ojects:
func PostFile(c *gin.Context){ var b bytes.Buffer w := multipart.NewWriter(&b) c.Request.ParseMultipartForm(100000) multiPartform ,_:= c.MultipartForm() err := utils.CreatFormFiles(&b,multiPartform,w) if err != nil{ fmt.Println(err) return } request,err:=http.NewRequest(http.MethodPost,"http://192.168.50.250:8081/objects",&b) if err != nil{ fmt.Println(err) return } //模拟客户端请求,还可以在request.Form中添加其他信息,如username,password等key_values client := http.Client{Timeout:5*time.Second} request.Header.Set("Content-Type",w.FormDataContentType()) resp,err := client.Do(request) if err != nil{ fmt.Println(err) return } handlers.SendRespense(c,resp.StatusCode,"ok") }
CreatFormFiles:
func CreatFormFiles(b *bytes.Buffer,form *multipart.Form,w *multipart.Writer)error{ for name,files := range form.File{ for _,file := range files{ f,err := file.Open() if err != nil{ return err } fw,err := w.CreateFormFile(name,file.Filename) if err != nil{ return err } _,err = io.Copy(fw,f) if err != nil{ return err } } } w.Close() //要关闭,会将w.w.boundary刷写到w.writer中 return nil }
进程B post /obcjetcs:
c.Header("Access-Control-Allow-Origin", "*") c.Header("Access-Control-Allow-Methods", "GET,POST,PUT,PATCH,DELETE,OPTIONS") c.Header("Access-Control-Allow-Headers", "authorization, origin, content-type, accept") c.Header("Allow", "HEAD,GET,POST,PUT,PATCH,DELETE,OPTIONS") c.Header("Content-Type", "multipart/form-data") c.Request.ParseMultipartForm(5000000) form,err := c.MultipartForm() if err != nil{ c.JSON(500,"bad form") } fheaders := form.File["upload"] for _,fheader := range fheaders{ fmt.Printf("name:%s,f:%v","upload",fheader.Filename) } c.JSON(200,"ok")
这样我们就可以在前端上传多个文件。我这里示范的是在upload这个key里带了三个文件。
image.png
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- java客户端无法上传文件到hdfs
- asp dotnet core 支持客户端上传文件
- axios上传图片,koa2接收保存上传的图片,lrz在上传前压缩图片
- 前端实现axios以表单方式上传文件,优化上传速度
- JeeSite V4.1.4 发布,支持分片上传、多线程上传
- SpringMVC教程--图片上传
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Out of their Minds
Dennis Shasha、Cathy Lazere / Springer / 1998-07-02 / USD 16.00
This best-selling book is now available in an inexpensive softcover format. Imagine living during the Renaissance and being able to interview that eras greatest scientists about their inspirations, di......一起来看看 《Out of their Minds》 这本书的介绍吧!