1. //相比smartUpload功能上感觉确实有点心有意力不足的感觉,就安全性判断后缀,smartUpload就非常方便。
  1. public ModelAndView addFileUp(HttpServletRequest request,HttpServletResponse response) throws Exception {
  2.  
  3. String preName = genName.doMake();//设置文件前缀名时间戳的MD5值
  4. String fileName = null; //路径+文件名+后缀
  5. String sucName = null; //最终名称
  6. String oldName = null; //原始名称
  7. //使用MultipartHttpServletRequest包装文件数据
  8. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  9. //构建图片保存的目录
  10. String logoPathDir = "/images/case/";
  11. //得到图片保存目录的真实路径
  12. String logoRealPathDir = request.getSession().getServletContext().getRealPath(logoPathDir);
  13. //根据真实路径创建目录
  14. File logoSaveFile = new File(logoRealPathDir);
  15. //判断组合的路径是否存在,不存在就创建
  16. if (!logoSaveFile.exists())
  17. {
  18. logoSaveFile.mkdirs();
  19. }
  20. //页面控件的文件流,从页面上获取属性
  21. MultipartFile multipartFile = multipartRequest.getFile("cpic");
  22. // 获取文件名,即上传的原始文件名
  23. oldName = multipartFile.getOriginalFilename();
  24. System.out.println(multipartFile.getOriginalFilename());
  25. //计算文件名长度(不包含后缀)
  26. int index = oldName.lastIndexOf(".");
  27. //如果文件名称<0 则用preName作为文件名
  28. if (index == -1) {
  29. sucName = preName;
  30. } else {
  31. //否则就用自己定义的
  32. sucName = preName + oldName.substring(index);
  33. }
  34. //设置属性值
  35. //拼成完整的文件保存路径加文件
  36. //得到的结果示范:d:\web\images\case\时间戳的MD5.gif
  37. fileName = logoRealPathDir + File.separator + sucName;
  38. File file = new File(fileName);
  39. try {
  40. //保存上传文件
  41. multipartFile.transferTo(file);
  42. try {
  43. cases.setCtitle(request.getParameter("ctitle"));
  44. cases.setCurl(request.getParameter("curl"));
  45. cases.setCtime(ts);
  46. cases.setCcontext(request.getParameter("ccontext"));
  47. cases.setCpic("images/case/" + sucName);
  48. cases.setCtime(ts);
  49. if (cases != null && !"".equals(cases)) {
  50. casesBiz.doAdd(cases);
  51. mv.addObject("casesMsg", "提示:案例 <b>[" + cases.getCtitle()+ "]</b> 添加完成!");
  52. } else {
  53. mv.addObject("casesMsg", "提示:案例 <b>[" + cases.getCtitle()+ "]</b> 添加失败!");
  54. }
  55. } catch (Exception e) {
  56. // TODO: handle exception
  57. mv.addObject("casesMsg", "异常出现:"+e);
  58. }
  59.  
  60. } catch (Exception e) {
  61. mv.addObject("casesMsg", "异常出现:"+e);
  62. }
  63. mv.setViewName("admin.do?method=cases");
  64. return mv;
  65. }

XML

  1. <bean id="multipartResolver"
  2. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  3. <!-- set the max upload size100MB -->
  4. <property name="maxUploadSize">
  5. <value>104857600</value>
  6. </property>
  7. <property name="maxInMemorySize">
  8. <value>4096</value>
  9. </property>
  10. <property name="defaultEncoding">
  11. <value>GBK</value>
  12. </property>
  13. </bean>

JAR文件下载地址:点击下载

spring MVC上传文件演示的更多相关文章

  1. Spring MVC上传文件

    Spring MVC上传文件 1.Web.xml中加入 <servlet> <servlet-name>springmvc</servlet-name> <s ...

  2. Spring MVC 上传文件

    Spring MVC上传文件需要如下步骤: 1.前台页面,form属性 method设置为post,enctype="multipart/form-data"  input的typ ...

  3. Spring MVC上传文件原理和resolveLazily说明

    问题:使用Spring MVC上传大文件,发现从页面提交,到进入后台controller,时间很长.怀疑是文件上传完成后,才进入.由于在HTTP首部自定义了“Token”字段用于权限校验,Token的 ...

  4. 解析Spring MVC上传文件

    新建一个普通的maven工程 在pom.xml文件中引入相应的坐标 <?xml version="1.0" encoding="UTF-8"?> & ...

  5. Spring Mvc 上传文件Demo 实例

    返得利购物. 淘宝.京东500家商城合作,包括全面的商城返利网.注冊就送5元,购物就有返利.随时提现. 同学们,新一轮的返利大潮正在慢慢靠近,让购物都认为自己在赚钱.购物,机票.游戏.酒店旅游,地方特 ...

  6. MVC上传文件

    ASP.NET MVC上传文件是必段撑握的知识.加强训练才是.以前Insus.NET曾使用第三方MyAjaxForm.js :http://www.cnblogs.com/insus/p/378548 ...

  7. Spring框架学习(8)spring mvc上传下载

    内容源自:spring mvc上传下载 如下示例: 页面: web.xml: <?xml version="1.0" encoding="UTF-8"?& ...

  8. springboot(十七):使用Spring Boot上传文件

    上传文件是互联网中常常应用的场景之一,最典型的情况就是上传头像等,今天就带着带着大家做一个Spring Boot上传文件的小案例. 1.pom包配置 我们使用Spring Boot最新版本1.5.9. ...

  9. asp.net MVC 上传文件 System.Web.HttpException: 超过了最大请求长度

    APS.NET MVC 上传文件出现  System.Web.HttpException: 超过了最大请求长度 这个问题 原因是 默认最大上传文件大小为4096,而我提交的文件太大了. 解决方案:修改 ...

随机推荐

  1. 一台机器同时运行多个appium实例

    测试需要同时在多个android设备上运行,就需要启动多个appium 第一台是运行微信: DesiredCapabilities capabilities = new DesiredCapabili ...

  2. python3-day4(re正则表达式,冒泡)

    一.正则表达式常用 1.re.match:只尝试从字符串的查找,后面不作查找. 例子: import re text="aabcdefg123123" m=re.match('a' ...

  3. EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充

    EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) EO理论上 ...

  4. Nginx的启动脚本

    vi /etc/init.d/nginx #!/bin/sh # nginx        Startup script for nginx # chkconfig: - 85 15 # proces ...

  5. CentOS CVS安装使用

    CentOS CVS安装使用   一.CVS简介 CVS(Concurrent Versions System)版本控制系统:是一种GNU软件包,CVS是一个C/S系统,主要用于在多人开发环境下的源码 ...

  6. jquery选择指定元素之外的所有元素

    最近的项目中有这么一个需求,点击一排图片中的任意一张后底部弹出一个对话框,要求点击任意地方隐藏对话框 这个时候用not()显然是不现实的,用closest()可以实现差不多的功能 <!DOCTY ...

  7. mongodb 详解 error:10061 由于目标计算机积极拒绝,无法连接解决方法

    mongodb下载地址(32位):下载地址 自己选择版本 建立如下与mongodb并行的两个文件夹data和log. 然后建立mongo.config. 在mongo.config配置文件中输入: # ...

  8. (转)HTTP 无法注册 URL http://+:9999/CalculatorService/。进程不具有此命名空间的访问权限

    写WCF时在 1 host.Open(); 报错:HTTP 无法注册 URL http://+:9999/CalculatorService/.进程不具有此命名空间的访问权限(有关详细信息,请参见 h ...

  9. FpSpread添加标注

    先看效果 实现: FarPoint.Web.Spread.StyleInfo Errorcss = new FarPoint.Web.Spread.StyleInfo(); Errorcss.Bord ...

  10. C# 将对象序列化为Json格式

    public static string JsonSerializer<T>(T t) { DataContractJsonSerializer ser = new DataContrac ...