当前位置: 首页 > news >正文

SpringMVC multipart文件上传

一、介绍
   spring内建的multipart支持网络程序文件上传。我们可以通过配置MultipartResolver来启动上传支持。它定义在org.springframework.web.multipart包中。spring是通过使用Commons FileUpload插件来完成MultipartResolver的。
   默认情况下,spring不处理multipar的form信息,因为开发者默认会自己去处理这部分信息,当然我们可以随时打开这个支持。这样对于每一个请求,都会查看它是否包含multipart的信息,如果没有则按流程继续执行。如果发现有,就会交给已经被声明的MultipartResolver进行处理,然后我们就能像处理其他普通属性一样处理文件上传了。
二、使用MultipartResolver
  下面的例子显示了如何使用CommonsMultipartResolver

[html]  view plain copy
 
  1. <bean id="multipartResolver"  
  2.     class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  3.   
  4.     <!-- one of the properties available; the maximum file size in bytes -->  
  5.     <property name="maxUploadSize" value="100000"/>  
  6. </bean>  

当然,我们要把所需的jar包放到lib中, 就是commons-fileupload.jar.

三、处理一个文件上传的form
   当MultipartResolver处理完成以后,请求被处理成和普通请求一样。下面是页面文件。

[html]  view plain copy
 
  1. <html>  
  2.     <head>  
  3.         <title>Upload a file please</title>  
  4.     </head>  
  5.     <body>  
  6.         <h1>Please upload a file</h1>  
  7.         <form method="post" action="/form" enctype="multipart/form-data">  
  8.             <input type="text" name="name"/>  
  9.             <input type="file" name="file"/>  
  10.             <input type="submit"/>  
  11.         </form>  
  12.     </body>  
  13. </html>  

下一步是创建一个controller来处理文件上传。controller也和其他的一样,除了在我们的方法参数中使用MultipartHttpServletRequest或者MultipartFile。

[java]  view plain copy
 
  1. @Controller  
  2. public class FileUpoadController {  
  3.   
  4.     @RequestMapping(value = "/form", method = RequestMethod.POST)  
  5.     public String handleFormUpload(@RequestParam("name") String name,  
  6.         @RequestParam("file") MultipartFile file) {  
  7.   
  8.         if (!file.isEmpty()) {  
  9.             byte[] bytes = file.getBytes();  
  10.             // store the bytes somewhere  
  11.            return "redirect:uploadSuccess";  
  12.        } else {  
  13.            return "redirect:uploadFailure";  
  14.        }  
  15.     }  
  16.   
  17. }  

最后,我们要声明我们的controller和multipar解析器

[html]  view plain copy
 
  1. <beans>  
  2.     <bean id="multipartResolver"  
  3.         class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>  
  4.     <!-- Declare explicitly, or use <context:annotation-config/> -->  
  5.     <bean id="fileUploadController" class="examples.FileUploadController"/>  
  6.   
  7. </beans>   

--------------------------

如果你对java、swing、各种框架、javascript、css、linux、数据库编程等知识很感兴趣,或者正在从事这些工作,请加入我建的群:464696550

相关文章:

  • apache开源项目--ibatis
  • 快播活该被抓,跟公诉人是谁无关
  • 一则简单演示样例看Oracle的“无私”健壮性
  • 忘记Mysql的root密码怎么办?
  • Linux vim 命令
  • [转载]基于TFS实践敏捷-工作项跟踪
  • ODBC CRecordSet访问
  • mysql 常用函数以及常见查询语句
  • 在.Net MVC结构API接口中判断http头信息实现公共的权限验证过滤器示例
  • JAVA生成二维码(zxing)
  • 【源代码】LinkedHashMap源代码剖析
  • Codeforces Gym 100015C City Driving 离线LCA
  • C#中timer类的用法
  • JavaScript基础:数据类型的中的那些少见多怪
  • 负数的二进制表示
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 2019年如何成为全栈工程师?
  • Docker: 容器互访的三种方式
  • ES6系统学习----从Apollo Client看解构赋值
  • IOS评论框不贴底(ios12新bug)
  • JavaScript类型识别
  • js作用域和this的理解
  • leetcode98. Validate Binary Search Tree
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • windows下如何用phpstorm同步测试服务器
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 搞机器学习要哪些技能
  • 检测对象或数组
  • 码农张的Bug人生 - 初来乍到
  • 每天10道Java面试题,跟我走,offer有!
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 携程小程序初体验
  • 主流的CSS水平和垂直居中技术大全
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 正则表达式-基础知识Review
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (附源码)springboot教学评价 毕业设计 641310
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (理论篇)httpmoudle和httphandler一览
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)大型网站的系统架构
  • (转载)从 Java 代码到 Java 堆
  • .“空心村”成因分析及解决对策122344
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • // an array of int
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [\u4e00-\u9fa5] //匹配中文字符
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [c++] 自写 MyString 类
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)
  • [HackMyVM]靶场Crossbow
  • [JDBC-1] JDBC Base Template
  • [LeetCode] 626. 换座位