html代码:
<!-- 必须设置enctype值为multipart/form-data -->
<form id="uploadForm" enctype="multipart/form-data">
<input id="file" type="file" name="file"/>
<button id="upload" type="button">upload</button>
</form>
js代码:
function submit(){
$('#upload').click(function(){
//需要利用FormData接口实例化一个表单对象,实现文件上传
//注意:不能写在绑定方法前面,页面加载后就创建该对象,后台接收为null
var formData = new FormData($('#uploadForm')[0]);
if(checkData()){
$.ajax({
url:'${pageContext.request.contextPath}/hrcontro/upload',
type: 'POST',
data: formData,
//必须设置processData和contentType属性为false,才可以改变enctype类型
processData: false,
contentType: false
}).done(function(res) {}).fail(function(res) {});
}
});
}
controller代码:
@RequestMapping("/upload")
@ResponseBody
//可以直接使用MultipartFile来接收,注意名字要和前端name的值对应
public String UploadExcel(MultipartFile file){
InputStream in =null;
List<List<Object>> listob = null;
try {
if(file.isEmpty()){
throw new Exception("文件不存在!");
}
in = file.getInputStream();
//ImportExcelUtil:自定义封装的Excel读取工具
listob = new ImportExcelUtil().getBankListByExcel(in,file.getOriginalFilename());
in.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (List<Object> list : listob) {
TbDepartment tbDepartment = new TbDepartment();
tbDepartment.setDeptName((String) list.get(1));
System.out.println(tbDepartment);
}
return "departmentTab";
}
applicationContext-mvc.xml配置文件:
<!-- 上传拦截,如最大上传值及最小上传值 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>1024</value>
</property>
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>