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