from表单上传文件
前端代码
<div style="margin-left: 20%;margin-top: 10%;">
<form id="uploadFile" >
<input type="file" name="files" multiple="multiple" /> <!-- input框加上 multiple="multiple"就可以同时上传多个文件 -->
<input type="hidden" name="projectId" value="1234"/> <!-- 这是你要带去后台的值 -->
</form>
</div>
<script>
$("input[type='file']").on("change",function(){ //input框的内容改变就ajax上传
var formData = new FormData($( "#uploadFile" )[0]);
$.ajax({
type: "POST",
contentType: false,
processData: false,
url:"/upload/uploadFile", //url
data:formData,
async: false,
error: function(request) {
alert("出错了");
},
success: function(data) {
}
});
})
</script>
后台控制器接收的代码
@ResponseBody
@RequestMapping(value="/uploadFile",method = RequestMethod.POST)
public String uploadFile(@RequestParam("files") MultipartFile[] files,String projectId) {
return "null";
}
表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,enctype=”multipart/form-data”是上传二进制数据;form里面的input的值以2进制的方式传过去。 form里面的input的值以2进制的方式传过去,所以request就得不到值了。