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

Java原生服務(wù)器接收上傳文件 不使用MultipartFile類(lèi)

 更新時(shí)間:2019年09月25日 11:29:58   投稿:lijiao  
這篇文章主要為大家詳細(xì)介紹了Java原生服務(wù)器接收上傳文件,不使用MultipartFile類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

由于工作中 使用 MultipartFile 與現(xiàn)有的一些上傳文件組件沖突

所以使用其他的接收上傳文件的方法.

首先我把 MultipartFile 類(lèi)的配置文件注釋掉.

<!-- <bean id="multipartResolver"
 class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <property name="defaultEncoding" value="utf-8" />
 <property name="maxUploadSize" value="10485760" />
 最多上傳10M,初始化了此類(lèi),MultipartFile 將會(huì)收到文件,而request將不會(huì)!
 </bean> -->

然后把原有的文件接收方法,改為此代碼,

注釋詳細(xì),就不多廢話(huà)了:

/**
* 從 request 中獲取上傳的文件
* @warn 后續(xù)需要 刪除處理文件上傳時(shí)
* 生成的臨時(shí)文件 ,使用item.delete();
* @param request http請(qǐng)求
* @param encoding 解碼方式,傳null默認(rèn) utf-8
* @return 返回的是一個(gè) FileItem 集合
*/
public List<FileItem> getUploadInputSteam(HttpServletRequest request,String encoding){
 if (encoding==null || "".equals(encoding)) {
 encoding = "UTF-8";
 }
 List<FileItem> items = new ArrayList<FileItem>();
 //初始化需要解析文件的幾個(gè)類(lèi)
 DiskFileItemFactory factory = new DiskFileItemFactory();
 ServletFileUpload upload = new ServletFileUpload(factory);
 upload.setHeaderEncoding(encoding);
 if (!ServletFileUpload.isMultipartContent(request)) {
 return items;
 }
 try {
 //使用ServletFileUpload解析器解析上傳數(shù)據(jù),解析結(jié)果返回的是一個(gè)List<FileItem>集合
 //每一個(gè)FileItem對(duì)應(yīng)一個(gè)Form表單的輸入項(xiàng)
 List<FileItem> list = upload.parseRequest(request);
 for (FileItem item : list) {
 //如果fileitem中封裝的是普通輸入項(xiàng)的數(shù)據(jù)
 if (item.isFormField()) {
// String name = item.getFieldName();
//  //解決普通輸入項(xiàng)的數(shù)據(jù)的中文亂碼問(wèn)題
// String value = item.getString(encoding);
// System.out.println(name +"="+value);
 }else{
 String fileName = item.getName();
 if (fileName==null||fileName.trim().equals("")) {
 continue;
 }
 //注意:不同的瀏覽器提交的文件名是不一樣的,有些瀏覽器提交上來(lái)的文件名是帶有路徑的,
 //如: c:\a\b\1.txt,而有些只是單純的文件名,如:1.txt
 //處理獲取到的上傳文件的文件名的路徑部分,只保留文件名部分
// fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
 items.add(item);
 }
 }
 } catch (Exception e) {
 e.printStackTrace();
 return items;
 }
 return items;
 }
 @RequestMapping("/testUpload")
 @ResponseBody
 public String testUpload(HttpServletRequest request) throws Exception{
 //獲取文件集合
 List<FileItem> items = getUploadInputSteam(request, "utf-8");
 //取第一個(gè)做實(shí)驗(yàn)
 FileItem item = items.get(0);
 
 //上傳的文件名
 String fileName = item.getName();
 fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
 
 //數(shù)據(jù)流獲取,獲得數(shù)據(jù)流你可以自由解析 , 保存 等操作
 InputStream in = item.getInputStream();
 
 //關(guān)閉流
 in.close();
 
 //最后一定要?jiǎng)h除,item的臨時(shí)文件
 item.delete();
 return "success!";
}

注意:

1.解析文件的類(lèi) 都來(lái)自 org.apache.commons 的這個(gè)包

2.前端傳來(lái)一定要寫(xiě) 好表單的,action 的 url ,enctype="multipart/form-data",post請(qǐng)求

3.input 按鈕指明 type="file" name="xxx" 然后還有 提交按鈕  (使用ajax異步提交也行) 

例如:

<form action="test/testUpload" method="post"
 enctype="multipart/form-data">
 
 <input type="file" name="myFile" value="選擇文件"> 
 <input type="submit" value="提交文件" />
</form>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot整合nacos,如何讀取nacos配置文件

    springboot整合nacos,如何讀取nacos配置文件

    這篇文章主要介紹了springboot整合nacos,如何讀取nacos配置文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • BootStrap Jstree 樹(shù)形菜單的增刪改查的實(shí)現(xiàn)源碼

    BootStrap Jstree 樹(shù)形菜單的增刪改查的實(shí)現(xiàn)源碼

    這篇文章主要介紹了BootStrap Jstree 樹(shù)形菜單的增刪改查的實(shí)現(xiàn)源碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • Spring Boot 2.X 快速集成單元測(cè)試解析

    Spring Boot 2.X 快速集成單元測(cè)試解析

    這篇文章主要介紹了Spring Boot 2.X 快速集成單元測(cè)試解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Maven多模塊工程Module開(kāi)發(fā)(圖文教程)

    Maven多模塊工程Module開(kāi)發(fā)(圖文教程)

    這篇文章主要介紹了Maven多模塊工程Module開(kāi)發(fā)(圖文教程),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Spring Batch 入門(mén)示例

    Spring Batch 入門(mén)示例

    本文將向您展示如何使用Spring Boot創(chuàng)建一個(gè)的Spring Batch的Hello World示例。對(duì)和我一樣入門(mén)的有一定的幫助,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Jax-rs規(guī)范下REST接口使用方法詳解

    Jax-rs規(guī)范下REST接口使用方法詳解

    這篇文章主要介紹了Jax-rs規(guī)范下REST接口使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • springboot如何引入外部yml配置文件

    springboot如何引入外部yml配置文件

    這篇文章主要介紹了springboot如何引入外部yml配置文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用

    淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用

    這篇文章主要介紹了淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用,涉及Atomic在硬件上的支持,Atomic包簡(jiǎn)介及源碼分析等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • java Comparator.comparing排序使用示例

    java Comparator.comparing排序使用示例

    本文主要介紹了java Comparator.comparing排序使用示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • SpringBoot統(tǒng)一處理功能實(shí)現(xiàn)的全過(guò)程

    SpringBoot統(tǒng)一處理功能實(shí)現(xiàn)的全過(guò)程

    最近在做項(xiàng)目時(shí)需要對(duì)異常進(jìn)行全局統(tǒng)一處理,主要是一些分類(lèi)入庫(kù)以及記錄日志等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot統(tǒng)一功能處理實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03

最新評(píng)論

高碑店市| 宁武县| 焦作市| 洛隆县| 上林县| 金山区| 罗田县| 五大连池市| 临安市| 雅安市| 武定县| 万源市| 江口县| 哈密市| 庄浪县| 黄骅市| 福建省| 汉川市| 正定县| 托克托县| 长沙县| 海林市| 宁德市| 灵台县| 新和县| 陇川县| 大田县| 休宁县| 丰顺县| 龙胜| 即墨市| 井冈山市| 桐城市| 大同市| 顺平县| 皋兰县| 青川县| 巴中市| 泸溪县| 大安市| 盱眙县|