SpringMVC(SSM)框架搭建JavaWeb项目时,前端页面文件上传,后台Java下载功能实现及相关问题记录说明
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC(SSM)框架搭建JavaWeb项目时,前端页面文件上传,后台Java下载功能实现及相关问题记录说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看在前面:前端頁面通過input控件實現文件上傳,后臺Java使用SpringMVC框架的實現網上有較多教程,但是真正配置一遍下來不報錯的較少,所以本博客前面先介紹一遍完整的設置步驟,然后介紹遇到的一些問題。
?
1. 前端頁面form表單的method屬性設置為“post”,如果設置為get無法處理文件數據過長的請求;然后,enctype屬性設置為“multipart/form-data”,表示表單的編碼類型是多段數據,既有文本數據,又有二進制文件數據。
#--------------form表單設置---------------#method="post" enctype="multipart/form-data"?
2. Java后端若想能實現文件的處理,那么首先需要加入相關jar包,如果是maven項目,可以在pom.xml文件添加commons-fileupload和commons-io依賴來加載相關包,但是我添加依賴后,項目并沒有加載相關包(可能要注意版本問題),從而報錯:Error creating bean with name 'multipartResolver':?Failed to introspect bean class [org.springframework.web.multipart.commons.CommonsMultipartResolver。
#----------------------------maven項目pom.xml文件的設置--------------------------#<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.2</version> </dependency> <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.5</version> </dependency>因此推薦去apache官網的commons-fileupload和commons-io頁面手動下載jar包加入項目中,jar包導入不成功可參考另一篇博客,最終jar包導入如下圖。
?
3. SpringMVC配置文件中添加如下代碼聲明CommonsMultipartResolver對象,從而實現對表單項的解析,配置代碼如下。注意:如果使用注解的話,還得配置組件掃描器和注解驅動。
?
4. 最后,在Controller類處理請求的方法添加MultipartFile對象,該對象的名稱要和前端文件控件的name一致,否則無法賦值,那么MultipartFile對象為null。
如果有多個文件控件,那么前端頁面中令這些控件的name相同,后端使用MultipartFile數組來接收即可,有些博客說如果是數組,需要使用@RequestParam注解,但是我這邊沒用,正常有效,你可以根據自己情況試試,如下代碼段表示。
#----------------------前端頁面-------------------><input type="file" name="vertify" id="v1" value="" > <input type="file" name="vertify" id="v2" value="" >#----------------------后端請求方法--------------->@RequestMapping(value = "/teareg", method = RequestMethod.POST, produces = "text/plain;charset=utf-8") public ModelAndView login(HttpServletRequest req, Teacher teacher, MultipartFile[] certify){}?
5. 最終保存文件代碼如下,成功保存在目標路徑效果如下圖。
// 得到當前項目的所在路徑 String path = req.getServletContext().getRealPath("/");// 獲取文件名 String fileName = file.getOriginalFilename();// 根據路徑和文件名創建文件類對象 File filePath = new File(path, fileName);// 最終將MultipartFile對象certify保存至相應路徑中 certify.transferTo(filePath);?
?
報錯1.??java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils
解決:這個問題是因為網上有一些博客說導入了commons-fileupload包,不用導入commons-io包導致某些IO類找不到,可能以前是真的導入commons-fileupload就可以,但是隨著版本的更新迭代,某些版本已經沒有了包含關系,所以我們得自己導入commons-io包。
?
報錯2.?Required request part 'ss' is not present
解決:由于后端的MultipartFile對象名和前端控件name屬性不一致造成。
總結
以上是生活随笔為你收集整理的SpringMVC(SSM)框架搭建JavaWeb项目时,前端页面文件上传,后台Java下载功能实现及相关问题记录说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSM编写JavaWeb项目时,出现了e
- 下一篇: SpringMVC接收ajax请求并回传