天天看點

Spring & Spring MVC 10. Spring MVC 檔案上傳 & 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

一、單檔案上傳

首先配置一下我們的項目,打開 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 兆

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

當然,光一個這個配置還不行,我們還需要兩個依賴

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

自己去 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,用來對這個上傳進行操作

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

我們可以通過 file 來擷取到前端上傳的檔案,(這裡是和前端的 name 屬性進行比對)

然後我們通過 file 來擷取到檔案的原名稱,當然啊,一般我們不使用原名稱,我們隻用原檔案的字尾。

我們到時候把這個檔案存到我們的本地磁盤,我自己存入到 D 盤的某一個地方,來看代碼

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

我們使用 getOriginalFilename() 擷取到原檔案名稱,然後使用 transferTo 把檔案存到 D:/file/img 下面,用 uuid 當做檔案名稱,用源檔案的字尾當做新檔案字尾

然後我們啟動一下伺服器,進行測試一下,(這裡大家自己去準備一個圖檔哈,不要太大~~)

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

我這裡是空的。

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示
Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

可以看到,跳轉了,我們去路徑下看看有沒有圖檔。

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

沒有問題。

二、多檔案上傳

我們這裡建立一個新的頁面,file2.html

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

這裡注意一下請求的 action,還有就是 檔案的 name,這裡要保持一緻。

然後去寫一個方法處理方法,直接上代碼

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

我們這裡隻需要将 MultipartFile 改成數組即可~~,其他的不需要動

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

寫完以後就這樣,從新啟動伺服器,然後我們來測試一下。

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示
Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

來看看檔案夾裡面有沒有東西

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

是 OK 的哈

三、圖檔顯示

我們上面吧這個圖檔上傳到了我們本地磁盤的 D盤中,但是怎麼顯示呢?這裡我們使用 springmvc 給我們提供的一個東西,靜态資源映射。

官方文檔:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-config-static-resources

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

我們打開 springmvc.xml 來配置一下

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示
<mvc:resources mapping="/img/**" location="file:///D:/file/img/" />
           

我這裡是因為我在 D 盤 file img 目錄存着,是以這樣寫,你們自己存到那裡就自己該一下。

這樣的話,如果我們是 /img/xxx圖檔 請求的話,mvc 會幫我們将這個請求映射到本地的路徑中,也就是 location 的那個路徑

然後我們從新啟動一下伺服器,通路一下我們的圖檔

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示

可以看到哈,沒有問題,這樣的話我們就變成了通路靜态資源了~~

這一篇就到這裡,大家自己進行測試一下,有不懂得可以聯系我 QQ:2100363119

各位,還有一件事,我的官網要準備從新制作,有沒有什麼好的提議,用什麼架構,有什麼功能,歡迎各位小夥伴提供~~~(直接評論在評論區即可,我到時候會整理起來)

Spring &amp; Spring MVC 10. Spring MVC 檔案上傳 &amp; 顯示一、單檔案上傳二、多檔案上傳三、圖檔顯示