springmvc 中對檔案上傳做了封裝,我們可以更加方便的實現檔案上傳。從 spring3.1
開始,對於檔案上傳,提供了兩個處理器:
commonsmultipartresolver
standardservletmultipartresolver
第乙個處理器相容性較好,可以相容 servlet3.0 之前的版本,但是它依賴了commons-fileupload 這個第三方工具,所以如果使用這個,一定要新增 commons-fileupload 依賴。
第二個處理器相容性較差,它適用於 servlet3.0之後的版本,它不依賴第三方工具,使用它,可以直接做檔案上傳。
commonsmultipartresolver
新增依賴12
345commons-fileupload
commons-fileupload
1.4配置multipartresolver
注意,這個 bean 一定要有 id,並且 id 必須是 multipartresolver
建立jsp頁面12
34注意檔案上傳請求是 post 請求,enctype 一定是 multipart/form-data
解決檔案儲存路徑,這裡是儲存在專案執行目錄下的 img 目錄下,然後利用日期繼續寧分類
處理檔名問題,使用 uuid 做新的檔名,用來代替舊的檔名,可以有效防止檔名衝突
儲存檔案
生成檔案訪問路徑
這裡還有乙個小問題,在 springmvc 中,靜態資源預設都是被自動攔截的,無法訪問,意味著上傳成功的無法訪問,因此,還需要我們在 springmvc 的配置檔案中,再新增如下配置:
完成之後,就可以訪問 jsp 頁面,做檔案上傳了。
當然,預設的配置不一定滿足我們的需求,我們還可以自己手動配置檔案上傳大小等:12
3456
78910
1112
standardservletmultipartresolver
這種檔案上傳方式,不需要依賴第三方 jar(主要是不需要新增 commons-fileupload 這個依賴),但是也不支援 servlet3.0 之前的版本。
使用 standardservletmultipartresolver ,那我們首先在 springmvc 的配置檔案中,配置這個 bean:
注意,這裡 bean 的名字依然叫 multipartresolver
配置完成後,注意,這個 bean 無法直接配置上傳檔案大小等限制。需要在 web.xml 中進行配置(這裡,即使不需要限制檔案上傳大小,也需要在 web.xml 中配置 multipart-config):12
3456
78910
1112
1314
1516
1718
1920
2122
springmvc
org.springframework.web.servlet.dispatcherservlet
contextconfiglocation
classpath:spring-servlet.xml
e:\\temp
1048576
1048576
4096
多檔案上傳
多檔案上傳分為兩種,一種是 key 相同的檔案,另一種是 key 不同的檔案。
1 key 相同的檔案
這種上傳,前端頁面一般如下:12
34主要是 input 節點中多了 multiple 屬性。後端用乙個陣列來接收檔案即可:
key 不同的,一般前端定義如下:12
345這種,在後端用不同的變數來接收就行了:
SpringMVC 實現檔案上傳
springmvc實現檔案上傳很簡單,spring本身的使用也非常簡單,要使用spring的某些功能,只需要在spring 的配置檔案宣告對應的功能的bean即可,如題,我們這裡要用到的檔案上傳的bean是multipartresolver。第一步 加入到配置檔案 其中maxuploadsize 5...
springMVC實現上傳檔案
http上載是基於 rfc 1867 標準,spring mvc 利用apache commons fileupload 元件支援了這個標準,這樣利用spring mvc提供的api可以輕鬆的獲得上載檔案 實現步驟 1.配置jar包依賴 會和原先的jar包有隱式的依賴衝突,刪掉原先不必要的jar包就...
springmvc實現檔案上傳
一 客戶端程式設計 由於多數檔案上傳都是通過表單形式提交給後台伺服器的,因此,要實現檔案上傳功能,就需要提供乙個檔案上傳的表單。同時該表單必須滿足以下3個條件 form表單的method屬性設定為post form表單的enctype屬性設定為multipart form data 提供的檔案上傳輸...