SpringMVC實現圖片上傳

咱們實現文件上傳 用字節流的話代碼量大 效率低下 因此springMVC爲咱們提供了本身的方法。html

SpringMVC專門提供了CommonMultipartResolver組件實現文件上傳:java

  • maxUploadSize     文件最大限制,單位是byte
  • maxInMemorySize    低於這個大小的文件暫存在內存中
  • defaultEncoding    默認編碼

例如這樣配置: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包:

  • commons-fileupload.jar
  • commens-io-1.4.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端怎麼上傳文件以及後臺怎麼處理比較好還在研究中,若是有什麼好辦法能夠留言,幫幫小弟,哈哈哈。

 
補充:
Android app 也有enctype=「multipart/form-data」
這個是在請求頭裏面 ,基於http協議的就有這個的,那就都網頁跟app上傳圖片就同樣了
 

這裏只是作個簡單的demo 邏輯代碼不應寫在controller的。

特別注意下:

使用這個MultipartFile的時候,記得在前面加上@RequestParam,否則就會報錯

http://www.cnblogs.com/liuling/p/2014-3-5.html#

日後遇到問題還會繼續更新。

謝謝支持!

相關文章
相關標籤/搜索