欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

首先我把 MultipartFile 類的配置文件注釋掉.

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

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

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

/**
* 從 request 中獲取上傳的文件
* @warn 后續(xù)需要 刪除處理文件上傳時(shí)
* 生成的臨時(shí)文件 ,使用item.delete();
* @param request http請求
* @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è)類
 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對應(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ù)的中文亂碼問題
// String value = item.getString(encoding);
// System.out.println(name +"="+value);
 }else{
 String fileName = item.getName();
 if (fileName==null||fileName.trim().equals("")) {
 continue;
 }
 //注意:不同的瀏覽器提交的文件名是不一樣的,有些瀏覽器提交上來的文件名是帶有路徑的,
 //如: 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.解析文件的類 都來自 org.apache.commons 的這個(gè)包

2.前端傳來一定要寫 好表單的,action 的 url ,enctype="multipart/form-data",post請求

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>

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

相關(guān)文章

  • 手把手帶你理解java線程池之工作隊(duì)列workQueue

    手把手帶你理解java線程池之工作隊(duì)列workQueue

    這篇文章主要介紹了java線程池之工作隊(duì)列workQueue,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java中基于maven實(shí)現(xiàn)zxing二維碼功能

    Java中基于maven實(shí)現(xiàn)zxing二維碼功能

    這篇文章主要介紹了Java中基于maven實(shí)現(xiàn)zxing二維碼功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • Maven多模塊及version修改的實(shí)現(xiàn)方法

    Maven多模塊及version修改的實(shí)現(xiàn)方法

    這篇文章主要介紹了Maven多模塊及version修改的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • java接口性能優(yōu)化技巧

    java接口性能優(yōu)化技巧

    這篇文章主要為大家介紹了java接口性能優(yōu)化技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Scala可變參數(shù)列表,命名參數(shù)和參數(shù)缺省詳解

    Scala可變參數(shù)列表,命名參數(shù)和參數(shù)缺省詳解

    這篇文章主要介紹了Scala可變參數(shù)列表,命名參數(shù)和參數(shù)缺省詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Java并發(fā)編程Semaphore計(jì)數(shù)信號量詳解

    Java并發(fā)編程Semaphore計(jì)數(shù)信號量詳解

    這篇文章主要介紹了Java并發(fā)編程Semaphore計(jì)數(shù)信號量詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Java開發(fā)如何把數(shù)據(jù)庫里的未付款訂單改成已付款

    Java開發(fā)如何把數(shù)據(jù)庫里的未付款訂單改成已付款

    這篇文章主要介紹了Java開發(fā)如何把數(shù)據(jù)庫里的未付款訂單改成已付款,先介紹MD5算法,簡單的來說,MD5能把任意大小、長度的數(shù)據(jù)轉(zhuǎn)換成固定長度的一串字符,實(shí)現(xiàn)思路非常簡單需要的朋友可以參考下
    2022-11-11
  • Canal搭建?idea設(shè)置及采集數(shù)據(jù)到kafka的操作方法

    Canal搭建?idea設(shè)置及采集數(shù)據(jù)到kafka的操作方法

    這篇文章主要介紹了Canal搭建idea設(shè)置及采集數(shù)據(jù)到kafka的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • 如何使用Jackson和JSON Pointer查詢解析任何JSON節(jié)點(diǎn)

    如何使用Jackson和JSON Pointer查詢解析任何JSON節(jié)點(diǎn)

    本文介紹了JSON Pointer是字符串表達(dá)式,可以非常方便解析復(fù)雜JSON節(jié)點(diǎn)值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot實(shí)現(xiàn)接口版本控制的示例代碼

    SpringBoot實(shí)現(xiàn)接口版本控制的示例代碼

    這篇文章主要介紹了springboot如何實(shí)現(xiàn)接口版本控制,接口版本控制,比如微服務(wù)請求中某個(gè)接口需要升級,正常做法是升級我們的版本,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-03-03

最新評論