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) 此配置可以直接進行文件上傳,當然這種方式比較適合參數比較少的請求,,對於參數比較多的請求還是建議封裝成對象的形式進行處理;