javascript
SpringMVC图片文件上传功能实现
SpringMVC圖片文件上傳功能實現
1. 在工程依賴庫下添加文件上傳jar包
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
2.jsp頁面設置form表單屬性enctype
在表單中上傳圖片時,需要在form的屬性設置中添加enctype="multipart/form-data"。
[html]?view plaincopy表單中enctype="multipart/form-data"的意思,是設置表單的MIME編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據,進行下面的操作. enctype="multipart/form-data"是上傳二進制數據;form里面的input的值以2進制的方式傳過去。
頁面上如果要添加多個圖片應設置:
javaScript 添加文件函數:
<script type="text/javascript" src="js/jquery-2.1.1.min.js"></script> <script type="text/javascript">function addImg() {$("#addimg").after('<input type="file" name="proImg" id="proImg" />');} </script>然后在控制器上進行修改 把文件屬性變成數組<img src="https://img-blog.csdnimg.cn/2022010700504186556.png" alt="" />
3. springMVC.xml添加multipart類型解析器
在頁面form中提交enctype="multipart/form-data"的數據時,需要springmvc對multipart類型的數據進行解析,需要在springmvc.xml中配置multipart類型解析器。
[html]?view plaincopy4.創建圖片虛擬目錄,以存放圖片
eclipse IDE 通過界面進行配置:servers -->Tomcat v8.0 Server at localhost--> 雙擊,選擇-->add external web modules.
在圖片虛擬目錄中,一定將圖片目錄分級創建(提高i/o性能),一般我們采用按日期(年、月、日)進行分級創建。
5. jsp 頁面,設置圖片顯示的位置和大小。
[html]?view plaincopy6. Controller 類方法中寫相應的方法
<1, 方法的參數中添加MultipartFile items_pic行參 ?這個跟頁面的圖片的參數名字是一致的;
<2, 為了避免文件名稱相同而沖突,使用UUID.randomUUID()產生一個隨機的數值作為名稱;
<3. 將圖片數據寫入磁盤:items_pic.transferTo(newFile);
<4. 更新itemsCustom中屬性pic的值itemsCustom.setPic(newFileName);
7.測試效果
中間出現錯誤org.springframework.beans.BeanInstantiationException:Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]:Specified class is an interfaceorg.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:101)org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:762)org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:356)org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)javax.servlet.http.HttpServlet.service(HttpServlet.java:646)javax.servlet.http.HttpServlet.service(HttpServlet.java:727)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
解決方案:解決方案:在Controller的MultipartFile參數前面加上@RequestParam就解決了!
總結
以上是生活随笔為你收集整理的SpringMVC图片文件上传功能实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: create-react-app配置总结
- 下一篇: 峨眉派的创始人真的是郭襄吗?