这个方法用到了formDate对象已经springMVC的CommonsMultipartFile对象 transferTo(File)方法
jsp
<div>
<form id= "uploadForm">
<input id="filess" style="margin: auto" type="file" name="filess"/><hr>
<input class="btn blue" type="button" value="上传" οnclick="doUpload()" />
</form>
</div>
js
//用formData对象上传文件
function doUpload() {
var formData = new FormData($( "#uploadForm" )[0]);//第一个文件,这里只上传一个
$.ajax({
url: 'device/uploadFiles' ,//后台地址
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
});
}
controller
@RequestMapping(value = "/uploadFiles")
@ResponseBody
public void uploadFiles(@RequestParam(value = "filess",required = false) CommonsMultipartFile files, HttpServletRequest request) throws IOException {
if(!files.isEmpty()){
// 从数据库中查找文件保存路径
String config = configService.findByName("upload_dir");
String path = config + File.separator + "deviceFile" + File.separator;
String fileName = sdf.format(new Date()) + "_" + files.getOriginalFilename();
InputStreamReader isr = new InputStreamReader(files.getInputStream());
File targetFile = new File(path, fileName);
if (!targetFile.exists()) {
targetFile.mkdirs();//如果文件夹不存在,新建一个
}
try {
files.transferTo(targetFile);//CommonsMultipartFile的上传方法
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader bufferedReader = new BufferedReader(isr);
isr.close();
bufferedReader.close();
}
}