场景
前端导入excel文件,springMVC解析内容入库.
遇到问题
使用提供模板数据导入
正常
,但是
删除部分
数据再导入时
报错
.如图:
解决方案1
配置
springMVC
的
CommonsMultipartResolver
也需要设置
文件最小值
(!@.@),默认为10k, 上传文件大小
若小于
此参数,则
不会生成
临时文件.
<!-- 配置支持上传文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSizePerFile" value="104857600"/>
<property name="maxUploadSize" value="314572800"/>
<!-- 设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240 -->
<property name="maxInMemorySize" value="2048" />
</bean>
解决方案2
可手动生成临时文件
//手动生成临时文件
private File multipartToFile(MultipartFile multfile) throws IOException {
CommonsMultipartFile cf = (CommonsMultipartFile)multfile;
//这个myfile是MultipartFile的
DiskFileItem fi = (DiskFileItem) cf.getFileItem();
File file = fi.getStoreLocation();
//手动创建临时文件
if(file.length() < CommonConstants.MIN_FILE_SIZE){
File tmpFile = new File(System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") +
file.getName());
multfile.transferTo(tmpFile);
return tmpFile;
}
return file;
}
还原场景
描述下我的骚操作:
1.下载模板数据导入成功,大小为
12k
,
2.我删除了部分字段+属性,导入报错,大小为
8k,
解决思路
思路1: 因为错误显示的意思是:请求类型不是文件请求,
结果: 所以对比前端请求,发现2者并没有异常,
此路不通!
思路2: excel编辑后文件类型变了? 不能识别了?,
结果: 找了个文件,编辑前后导入都正常(!^^),
此路也不通!,
思路3: 万能谷歌,搜搜…,
结果: 排除简单无用的答案后,看到了
曙光,
配置属性,问题解决,
上传文件大小若小于10240,则不会生成临时文件
致谢!