上一章节介绍了使用echo启动一个http服务器并提供一个简单的GET接口,这一章对请求与响应做一下详细的讲解.
request是包含了当前请求信息的结构体,我们从中可以获取到前后端约定好的参数来作出相应的业务逻辑,这下面开始模拟请求
首先模拟一个添加用户的POST请求,这里使用了c.bind()这个方法,这个方法起到的作用是把表单参数或者JSON参数绑定至对应的结构体(这里必须是指针类型),字段需要一一对应,也就是说前端需要传递的表单或JSON参数名为name、age、gender才能绑定到结构体中.
此时此刻呢模拟一个GET请求用来获取用户信息
response是包含了返回信息的结构体,echo提供了多种类型的返回结果
上面编写了处理请求的handler,这里介绍一下如何把handler注册到路由中,这里对应的就是上面handler.
①先把要导入的包go build - go install
http.request的三个属性Form、PostForm、MultipartForm:
Form:存储了post、put和get参数,在使用之前需要调用ParseForm方法.
PostForm:存储了post、put参数,在使用之前需要调用ParseForm方法.
MultipartForm:存储了包含了文件上传的表单的post参数,在使用前需要调用ParseMultipartForm方法.
获取Get参数
小结:r.Form是url.Values字典类型,r.Form["id"]取到的是一个数组类型.因为http.request在解析参数的时候会将同名的参数都放进同一个数组里.
g.GetHeader("token")
g.Request.Header.Get("token")
h := HeaderParam{}?
g.ShouldBindHeader(h)? ? ? ? ? ?//使用结构体可以解析,map无效
如:测试
g.DefaultQuery("test","")
g.Query("test")
g.Request.URL.Query().Get("test")
//text类型参数
formP,ok := g.GetPostForm("test")
formP := g.DefaultPostForm("test","")
formP :=g.Request.PostForm.Get("test")
//file类型
file,err := r.FormFile("file")? ? //单个
//多个formData解析
formDatas,err := r.MultipartForm()
if err !=nil formDatas !=nil {
files := formDatas.File["files"]
textParams := formDatas.Value["params"]
}
数据解析,同一个参数,只可调用一次,不然会EOF
①.、定义结构体解析
uploadInfo :=model.UploadInfo{}
err := c.ShouldBindJSON(uploadInfo)
uploadInfo?:= make(map[string]interface{})
用MultipartFile接收表单上传文件数据
案例:全过程
jsp
form action="${pageContext.request.contextPath }/upload" method="post" enctype="multipart/form-data"
文件:input type="file" name="uploadFile"/br/br/
文件:input type="file" name="uploadFile"/br/br/
文件:input type="file" name="uploadFile"/br/br/
input type="submit" value="上传"/
/form
SpringMVC Controller
@RequestMapping(value = "/upload",method = RequestMethod.POST)
public String upload(@RequestParam(value = "file", required = false) MultipartFile uploadFile, HttpServletRequest request, ModelMap model) {
System.out.println("开始");
String path = request.getSession().getServletContext().getRealPath("upload");
String fileName = file.getOriginalFilename();
String fileName = new Date().getTime()+".jpg";
System.out.println(path);
File targetFile = new File(path, fileName);
if(!targetFile.exists()){
targetFile.mkdirs();
//保存
try {
file.transferTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName);
return "uploadResult";
以上就是土嘎嘎小编为大家整理的go语言接收表单文件相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!