ajax表单提交上传文件restful微服务提交请求

1、上传文件表单提交的js写法

      这里只讨论ajax的提交方式,表单提交我用了一个jquery-form.js来做表单的POST提交(get方法是不支持表单的提交的),

      form表单的类型需要写成enctype="multipart/form-data",不写的话就会默认为application/x-www-form-urlencoded这样后端会报错,不多说直接上代码,js代码为:

var option = {
url : "http://localhost:8080/api/v1/workflow/generateRequestParamByFile",
type : 'POST',
dataType : 'json',
headers : {
"ClientCallMode" : "ajax"
}, //添加请求头部
success : function(data) {
document.getElementById("resultArea").value=JSON.stringify(data);
document.getElementById("returnArea").style.display="";
},
error : function(data) {
alert(JSON.stringify(data) + "--上传失败,请刷新后重试");
}
};
$("#submitForm").ajaxSubmit(option);
return false; //最好返回false,因为如果按钮类型是submit,则表单自己又会提交一次;返回false阻止表单再次提交

2、后端微服务的注解使用

后台restful微服务需要可以简单点配置,不需要配置consumes参数,如果要返回json数据直接配置produces为apllication/json接口(因为前段一般都是处理js数据因此我们也一般返回json)

一、一种方法是配置的请求注解为public Boolean fileUpload(@ModelAttribute("submitForm") FormRequest formRequest)  这样我们直接将form表单数据转换成对象,对象中文件的属性可以设置成MultipartFile 。这样我们直接可以用这个文件对象获取输入流,进行后面的操作。

二、第二种方法是配置的请求注解为 public @ResponseBody Boolean fileUpload(MultipartFile file ,String userId) 此配置可以直接进行文件上传,当然这种方式比较适合参数比较少的请求,,对于参数比较多的请求还是建议封装成对象的形式进行处理;

posted @ 2016-10-28 15:41  迷途小码猿  阅读(3241)  评论(0编辑  收藏  举报