可以使用H5的FormData来实现异步文件上传,注意浏览器的兼容性。
使用这种方式请确保JSP基于H5。
前端代码如下:
<form id="ff" enctype="multipart/form-data" method="post" action="upload/testUpload">
<input id="file" type="file" name="file" multiple="multiple"/><br/>
<input type="button" value="使用FormData" onclick="formDataSubmit()" />
</form>
js代码如下:
<script>
function formDataSubmit(){
var form = document.getElementById('ff');
var formdata = new FormData(form);
$.ajax({
type: "POST",
url:"upload/formDataSubmit",
data:formdata,
async: false, //禁止异步往下执行,默认是true
contentType : false, //禁止jQuery设置Content-Type请求头 信息
processData : false, //禁止jQuery处理请求的数据
success: function(data) {
if(data == 'true'){
alert("成功!");
}else{
alert("失败!");
}
}
});
}
</script>
后台代码如下:
//使用formData
@RequestMapping("/formDataSubmit")
@ResponseBody
public String formDataSubmit(@RequestParam(value = "file", required = false) MultipartFile file,
HttpSession session) {
if (!file.isEmpty()) {
try{
String path = session.getServletContext().getRealPath("/upload/"); //获取本地存储路径
String fileName = file.getOriginalFilename();
String fileType = fileName.substring(fileName.lastIndexOf(".")); //获取后缀名
String newName=new Date().getTime() + fileType;
File file2 = new File(path,newName); //新建一个文件
file.transferTo(file2);
}catch(Exception e){
return "false";
}
}
return "true";
}