配置文件
SpringMVC用到是MultipartFile来进行文件上传,所以我们首先要配置MultipartResolver用于处理表单中的file
<!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5400000" /> <!-- 是上传文件的大小,单位为字节 -->
<property name="defaultEncoding" value="UTF-8" /> <!-- 是请求的编码格式 -->
<!-- <property name="resolveLazily" value="true" /> -->
</bean>
上传表单代码
Controller代码
@ResponseBody
@RequestMapping("/importNew")
public JSONObject importDataNew(@RequestParam(value = "file", required=false) MultipartFile file,
@RequestParam(value="rosterType", required=false, defaultValue="") String rosterType,
@RequestParam(value="scenceId", required=false, defaultValue="") String scenceId,
HttpServletRequest request,
HttpServletResponse response) { //rosterType和scenceId是表单提交的数据 因为文件上传带有其他参数 名字要与表单里的名字一样
response.setHeader("Access-Control-Allow-Origin", "*"); //?处理ajax跨域问题 或 ?处理返回前台JSON格式数据问题
JSONObject result = new JSONObject();
if (file.isEmpty()) {
result.put("success", false);
result.put("msg", "未获取到文件");
return result;
}
String fileName = file.getOriginalFilename(); //获取文件名
if (fileName.equals("")) {
result.put("success", false);
result.put("msg", "数据源错误");
return result;
}
try {
JSONObject info = blackWhiteRosterService.importBlackWhiteRosterNew(rosterType, scenceId, file);
result.put("resultGroup", info.getString("resultGroup"));
} catch (Exception e) {
e.printStackTrace();
result.put("success", false);
result.put("msg", "导入失败");
return result;
}
result.put("success", true);
result.put("msg", "导入成功");
return result;
}