spring 流上传文件和MultipartFile 问题


简单来说就是spring上传的io流上传。

我前端用的angularjs 的一个上传文件的插件,同时显示上传的进度,发现当进度是100%的时候后台才开始工作,然而老板也要求用io流传输,便开始疯狂的 百度 bing,都没找到原因。写了个serclet的demo发现这是spring 的问题,就想到了

spring 的一个bean

<bean id="multipartResolver"
class="com.shinewonder.oneshot.util.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="10485760000"></property>
<property name="maxInMemorySize" value="40960"></property>
</bean>
当时上传图片用的这个bean.我把这个注释后,后台会立即响应,但是上传图片的controller会报错。
当你配置了这个bean上传文件时spring 会封装request,spring会先缓存文件,然后才会访问你的controller。
上网查的是重写
CommonsMultipartResolver但是他是为了解决自己封装的request,但是思路是一样的,于是我查看了源码,发现控制spring封装的是isMultipart()于是我重写了这个方法,在里面过滤了我要io流上传的文件
public class CommonsMultipartResolver extends org.springframework.web.multipart.commons.CommonsMultipartResolver {
@Override
public boolean isMultipart(HttpServletRequest request) {
if(request.getRequestURI().indexOf("需要过滤的url")>=0)
return false;
else return request != null && ServletFileUpload.isMultipartContent(request);
}
}
后台就是用的request来获取io流,处理文件

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM