MultipartFile转File,getStoreLocation()为null;

  • Post author:
  • Post category:其他




场景

​     前端导入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,则不会生成临时文件



致谢!

参考文档:

https://www.bbsmax.com/A/kjdwWAZOdN/



版权声明:本文为qq_20789179原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。