Springmvc檔案上傳實現流程解析

2021-10-09 17:34:27 字數 1811 閱讀 8656

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 提供的檔案上傳輸...