咱們實現文件上傳 用字節流的話代碼量大 效率低下 因此springMVC爲咱們提供了本身的方法。html
SpringMVC專門提供了CommonMultipartResolver組件實現文件上傳:java
例如這樣配置:web
<!--fileUpload Support-->spring
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">app
<property name="defaultEncoding" value="UTF-8"/>網站
<!--max size:10M-->編碼
<property name="maxUploadSize" value="10485760"/>spa
</bean>orm
上面的的配置,id必須是multipartResolver,這樣纔會保證上傳。不能隨意命名htm
這就是必須保證bean的id相同,才能正常工做。
這時候咱們就開始配置form表單,必須添加enctype=「multipart/form-data」:
而後記得引入兩個jar包:
而後咱們開始編寫java代碼:
1.首先將request變成MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
2.接下來就能用getFile來獲取file:
CommonsMultipartFile file = (CommonsMultipartFile)multipartRequest.getFile(「file」);
這個file必須與form表單中input的name的值一致。
3.最後把file移動到目標地址:
FileCopyUtil.cope(file.getByte(),uploadFile);
以上是單文件上傳 ,對於多文件上傳,能夠用MultipartHttpServletRequest的getFileMap()來獲取表單傳過來的全部文件
而後用for循環遍歷依次上傳文件:
說完了文件上傳,再說下如何下載:
文件下載主要採用字節流的形式,有三個要點:
1.設置編碼格式爲:text/html;charset=utf-8
2.設置header中Content-disposition屬性值爲attachment;filename=文件名(這個文件名就是客戶端彈出框文件的名字)
3.設置header中Context-Length屬性,值爲文件的大小
以上是一個小例子。
這個是網站的上傳文件跟下載文件,app端怎麼上傳文件以及後臺怎麼處理比較好還在研究中,若是有什麼好辦法能夠留言,幫幫小弟,哈哈哈。
這裏只是作個簡單的demo 邏輯代碼不應寫在controller的。
特別注意下:
使用這個MultipartFile的時候,記得在前面加上@RequestParam,否則就會報錯
http://www.cnblogs.com/liuling/p/2014-3-5.html#
日後遇到問題還會繼續更新。
謝謝支持!