最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring MVC環(huán)境中文件上傳功能的實現(xiàn)方法詳解

 更新時間:2017年10月30日 11:07:51   作者:填空之城  
文件上傳是大家應該都不陌生的一個功能,最近在開發(fā)中就又遇到了這個需求,所以想著總結一下方便以后需要的時候參考,下面這篇文章主要給大家介紹了關于Spring MVC環(huán)境中文件上傳功能的實現(xiàn)方法,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

     我們在實際開發(fā)過程中,尤其是web項目開發(fā),文件上傳和下載的需求的功能非常場景,比如說用戶頭像、商品圖片、郵件附件等等。其實文件上傳下載的本質都是通過流的形式進行讀寫操作,而在開發(fā)中不同的框架都會對文件上傳和下載有或多或少的封裝,這里就以Spring MVC環(huán)境中文件的上傳為例,講解Spirng MVC環(huán)境下的文件上傳功能實現(xiàn)。下面話不多說了,來一起看看詳細的介紹吧。

一、客戶端編程

      由于多數文件上傳都是通過表單形式提交給后臺服務器的,因此,要實現(xiàn)文件上傳功能,就需要提供一個文件上傳的表單。同時該表單必須滿足以下3個條件:

  • form表單的method屬性設置為post;
  • form表單的enctype屬性設置為multipart/form-data;
  • 提供<input type="file" name="fileName" />的文件上傳輸入框。

在HTML5之前,如果想要上傳多個文件,必須使用多個<input>元素。但是在HTML5中,在<input>元素配置multiple屬性即可進行多個文件的上傳。在HTML5中編寫以下任意一行代碼,便可生成一個按鈕供選擇多個文件:

  • <input type="file" name="fileName" multiple />
  • <input type="file" name="images" multiple="multiple" />
  • <input type="file" name="images" multiple="" />

具體代碼示例如下:

<form action="uploadUrl" method="post" enctype="multipart/form-data">
 <input type="file" name="images" multiple="multiple" />
 <input type="submit" value="文件上傳" />
</form>

二、springmvc-config.xml配置文件配置

      當客戶端form表單的enctype屬性為multipart/form-data時,瀏覽器就會采用二進制流的方式來處理表單數據,而對于文件上傳的處理則涉及在服務器端解析原始的HTTP請求。Spring MVC為文件上傳提供了直接的支持,這種支持是用即插即用的MultipartResolver實現(xiàn)的。

在Sring MVC中使用MultipartResolver也非常簡單,只需要在Spring MVC配置文件springmvc-config.xml中定義MultipartResolver接口實現(xiàn)類即可,示例如下:

<!-- 配置文件上傳類型解析器 multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <!-- 設置上傳文件最大尺寸,單位為B -->
 <property name="maxUploadSize" value="5242880" />
</bean>

注意:

由于MultipartResolver實現(xiàn)類CommonsMultipartResolver內部是引用multipartResolver字符串獲取該實現(xiàn)類對象并完成文件上傳操作的,所以在配置CommonsMultipartResolver時必須指定該bean的id為multipartResolver。另外由于MultipartResolver實現(xiàn)類CommonsMultipartResolver是Spring MVC內部通過Apache Commons FileUpload技術實現(xiàn)的。因此Spirng MVC的文件上傳還需要依賴Apache Commons FileUpload的組件,即需要導入支持文件上傳和下載的JAR包,具體如下:

  •  commons-fileupload.jar
  •  commons-io.jar

三、后臺文件下載實現(xiàn)(MultipartFile接口介紹)

當完成上述客戶端代碼的編寫及文件上傳組件的配置后,在Spring MVC中處理已經上傳的文件就十分容易了,上傳到Spring MVC程序中的文件會被封裝到一個MultipartFile對象中,然后開發(fā)者通過該對象的方法就可以進行后續(xù)相關處理了。

編寫后臺文件上傳控制器類及方法,具體示例如下:

/**
 * 向文件上傳頁面跳轉
 */
@RequestMapping("/toFileUpload")
public String toFileUpload( ){
 return "fileUpload";
}
/**
 * 接收文件上傳請求
 */
@RequestMapping("/fileUpload")
public String fileUpload(List<MultipartFile> images){
 //對上傳圖像進行解析操作
 if(images !=null && images.size()>0){
  for (MultipartFile image : images) {
   //獲取上傳文件的原始名稱
   String originalFilename = image.getOriginalFilename();
   //設置上傳文件的保存地址目錄
   String dirPath="D:\\fileUpload\\";
   File file =new File(dirPath);
   //如果保存文件的地址不存在,就先創(chuàng)建目錄
   if(!file.exists()){
    file.mkdirs();
   }
   //使用UUID重新命名上傳的文件名稱(看公司需求,也可以用日期時間)
   String newFilename= UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
   try {
    //使用MultipartFile接口的方法完成文件上傳到指定位置
    image.transferTo(new File(dirPath+newFilename));
    //文件上傳成功后,需要將文件存放路徑存入數據庫中
    //TODO,省略
   } catch (Exception e) {
    e.printStackTrace();
    //當文件上傳出現(xiàn)異常,則重定向到文件上傳頁面
    return "redirect:toFileUpload";
   } 
  }
 }
 //文件上傳成功后,跳轉到成功頁面
 return "success";
}

四、效果演示(讀者可以自己編寫項目和jsp頁面)

部署并啟動web服務器,在瀏覽器地址啦輸入地址:http://localhost:8080/webname/toFileUpload后(讀者根據自己的項目和路徑進行訪問),瀏覽器的顯示效果如下圖所示。

上面我選擇了上傳2個文件,然后點擊提交后,即可完成上傳。讀者操作后可自行到指定上傳位置進行驗證。

至此,Sring MVC環(huán)境下文件上傳功能代碼即已實現(xiàn)。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • java字符串壓縮解壓示例

    java字符串壓縮解壓示例

    這篇文章主要介紹了java字符串壓縮解壓示例,先壓縮,再加密,再壓縮,數據越大,壓縮比例越高,需要的朋友可以參考下
    2014-03-03
  • java實現(xiàn)Spring在XML配置java類的方法

    java實現(xiàn)Spring在XML配置java類的方法

    下面小編就為大家?guī)硪黄猨ava實現(xiàn)Spring在XML配置java類的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • Springboot 1.5.7整合Kafka-client代碼示例

    Springboot 1.5.7整合Kafka-client代碼示例

    這篇文章主要介紹了Springboot 1.5.7整合Kafka-client代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java獲取七牛云存儲空間中圖片外鏈

    Java獲取七牛云存儲空間中圖片外鏈

    本文主要介紹了Java獲取七牛云存儲空間中圖片外鏈,需要獲取在七牛云中存儲的所有圖片,并返回外鏈地址,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Java完全二叉樹的創(chuàng)建與四種遍歷方法分析

    Java完全二叉樹的創(chuàng)建與四種遍歷方法分析

    這篇文章主要介紹了Java完全二叉樹的創(chuàng)建與四種遍歷方法,結合實例形式分析了完全二叉樹的概念、定義及遍歷操作相關實現(xiàn)技巧,并對比分析了滿二叉樹與完全二叉樹的區(qū)別,需要的朋友可以參考下
    2017-11-11
  • MyBatis使用resultMap如何解決列名和屬性名不一致

    MyBatis使用resultMap如何解決列名和屬性名不一致

    這篇文章主要介紹了MyBatis使用resultMap如何解決列名和屬性名不一致的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 關于RestTemplate的使用深度解析

    關于RestTemplate的使用深度解析

    這篇文章主要介紹了對RestTemplate的深度解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • spring結合redis如何實現(xiàn)數據的緩存

    spring結合redis如何實現(xiàn)數據的緩存

    這篇文章主要介紹了spring結合redis如何實現(xiàn)數據的緩存,實現(xiàn)的目的目的不是加快查詢的速度,而是減少數據庫的負擔,需要的朋友可以參考下
    2015-12-12
  • springboot簡單實現(xiàn)單點登錄的示例代碼

    springboot簡單實現(xiàn)單點登錄的示例代碼

    本文主要介紹了springboot簡單實現(xiàn)單點登錄的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java服務器的簡單實現(xiàn)過程記錄

    java服務器的簡單實現(xiàn)過程記錄

    在線瀏覽網頁離不開服務器,用戶發(fā)出請求request,服務器做出響應response,提供給用戶需要的頁面,這篇文章主要給大家介紹了關于java服務器簡單實現(xiàn)的相關資料,需要的朋友可以參考下
    2021-11-11

最新評論

晋宁县| 曲阳县| 浙江省| 固镇县| 陕西省| 突泉县| 溧水县| 治县。| 乐山市| 肃南| 集贤县| 曲水县| 新巴尔虎右旗| 阳朔县| 龙陵县| 榆中县| 申扎县| 金门县| 金寨县| 阜南县| 明溪县| 通化市| 农安县| 娱乐| 宝丰县| 辉县市| 拜城县| 成都市| 新干县| 砚山县| 双流县| 洛浦县| 常宁市| 大宁县| 名山县| 济源市| 灵宝市| 时尚| 电白县| 乌拉特中旗| 信丰县|