springMVC file文件上傳及參數接收


springMvc文件上傳,首先兩個基礎,

1.form表單屬性中加上enctype="multipart/form-data"

強調:form表單的<form method="post" ...,method必須有,我這里是用的是post,至於get行不行沒試過,沒有method="post"也會報不是multipart請求的錯誤。

2.配置文件中配置MultipartResolver

文件超出限制會在進入controller前拋出異常,在允許范圍內這個配置無影響

 

3.后端controller層參數接收

簡單的接收方法,思路:MultipartFile 接受文件並通過IO二進制流(MultipartFile.getInputStream())輸入到FileOutStream保存文件,然后該干嘛就干嘛

參數接收同MultipartFile 接收一樣。

接受form表單截圖中name為file和id的文件和參數。如下

@RequestMapping(value =  "attendee_uploadExcel.do")
@ResponseBody
public void uploadExcel(@RequestParam("file") MultipartFile file, @RequestParam("id") String id) throws Exception {
    //form表單提交的參數測試為String類型
    if (file == null) return ;
    String fileName = file.getOriginalFilename();
    String path = getRequest().getServletContext().getRealPath("/upload/excel");
    //獲取指定文件或文件夾在工程中真實路徑,getRequest()這個方法是返回一個HttpServletRequest,封裝這個方法為了處理編碼問題
    FileOutputStream fos = FileUtils.openOutputStream(new     File(path+"/" +fileName));//打開FileOutStrean流
    IOUtils.copy(file.getInputStream(),fos);//將MultipartFile file轉成二進制流並輸入到FileOutStrean
    fos.close();//
  ......
}

二、前后端分享的文件上件方法,此時前端傳后后台的為文件base64編碼的字符串

其他方法,將HttpServletRequest  req強轉成MultipartHttpServletRequest req后,req.getParameter("id");

@ResponseBody
@PostMapping("/import")
public Integer importFromExcel(HttpServletRequest request) {
        MultipartHttpServletRequest multipartRequest =     (MultipartHttpServletRequest) request;
    MultipartFile file = multipartRequest.getFile("file"); // 通過參數名獲取指定文件
    String id = multipartRequest.getParameter("id");
    String fileName = file.getOriginalFilename();
.........
}

原文鏈接  http://blog.csdn.net/u013771277/article/details/47384817

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM