一、單檔案上傳
首先配置一下我們的項目,打開 springmvc.xml,我們加點東西
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8" />
<property name="maxUploadSize" value="10485760" />
</bean>
就是這個,因為 SpringMVC 是用 MultipartFile 來進行檔案上傳的,是以我們先要配置 MultipartResolver,用于處理表單中的檔案
defaultEncoding配置請求的編碼格式,預設為iso-8859-1
maxUploadSize配置上傳檔案的最大機關,機關為位元組,我們這裡是 10 兆
當然,光一個這個配置還不行,我們還需要兩個依賴
自己去 Maven 倉庫去下載下傳一下~,并且引入到項目中
引入之後,我們先從頁面開始寫,自己去弄個頁面,然後弄個表單,POST 請求,上傳 File。
<form action="/springmvc_test/file/one" method="post" enctype="multipart/form-data">
File to upload: <input type="file" name="file">
<input type="submit" value="Upload">
</form>
很簡單哈,然後我們定義一個 Controller,用來對這個上傳進行操作
我們可以通過 file 來擷取到前端上傳的檔案,(這裡是和前端的 name 屬性進行比對)
然後我們通過 file 來擷取到檔案的原名稱,當然啊,一般我們不使用原名稱,我們隻用原檔案的字尾。
我們到時候把這個檔案存到我們的本地磁盤,我自己存入到 D 盤的某一個地方,來看代碼
我們使用 getOriginalFilename() 擷取到原檔案名稱,然後使用 transferTo 把檔案存到 D:/file/img 下面,用 uuid 當做檔案名稱,用源檔案的字尾當做新檔案字尾
然後我們啟動一下伺服器,進行測試一下,(這裡大家自己去準備一個圖檔哈,不要太大~~)
我這裡是空的。
可以看到,跳轉了,我們去路徑下看看有沒有圖檔。
沒有問題。
二、多檔案上傳
我們這裡建立一個新的頁面,file2.html
這裡注意一下請求的 action,還有就是 檔案的 name,這裡要保持一緻。
然後去寫一個方法處理方法,直接上代碼
我們這裡隻需要将 MultipartFile 改成數組即可~~,其他的不需要動
寫完以後就這樣,從新啟動伺服器,然後我們來測試一下。
來看看檔案夾裡面有沒有東西
是 OK 的哈
三、圖檔顯示
我們上面吧這個圖檔上傳到了我們本地磁盤的 D盤中,但是怎麼顯示呢?這裡我們使用 springmvc 給我們提供的一個東西,靜态資源映射。
官方文檔:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-config-static-resources
我們打開 springmvc.xml 來配置一下
<mvc:resources mapping="/img/**" location="file:///D:/file/img/" />
我這裡是因為我在 D 盤 file img 目錄存着,是以這樣寫,你們自己存到那裡就自己該一下。
這樣的話,如果我們是 /img/xxx圖檔 請求的話,mvc 會幫我們将這個請求映射到本地的路徑中,也就是 location 的那個路徑
然後我們從新啟動一下伺服器,通路一下我們的圖檔
可以看到哈,沒有問題,這樣的話我們就變成了通路靜态資源了~~
這一篇就到這裡,大家自己進行測試一下,有不懂得可以聯系我 QQ:2100363119
各位,還有一件事,我的官網要準備從新制作,有沒有什麼好的提議,用什麼架構,有什麼功能,歡迎各位小夥伴提供~~~(直接評論在評論區即可,我到時候會整理起來)