在gxpt_uas系统中,要实现文件(文件和图片等等,可以灵活配置)的批量上传至mongodb,在学习这个过程中,学习了mongodb,并实现了批量上传的功能,实现思路:在DWZ的基础上参考官方的实例结合现有的GXPT来实现,期间看了很多的博客,对于这些框架来说,主要的学习还是应该以文档指导为主,多看官方的手册(即便来说文档很少),多查资料,总的来看,可以说这是DWZ集成过来的插件,主要是js来实现,逐步的体会到了JS厉害,我们对于这些前端框架的学习都是一个道理的(easyui、DWZ、ExtJs等等),只要我们有个学习的思路,一切看似新的内容,我们都可以当成旧的内容学习,知识不同架构而已,学习的思路不变,入门还是很快的,框架确实封装了很多内容,逐步的深入学习吧,切入正题:

引入的文件

前台页面:uploadDuo.jsp

  1. <span style="font-size:18px;">uploaderOption="{
  2.  
  3. swf:'${contextPath}/styles/dwz/uploadify/scripts/uploadify.swf',<!-- 加载上传的进度条的文件 -->
  4.  
  5. uploader:'${contextPath }/upload/uploadPicAction.action',<!-- 文件提交到后台的action -->
  6.  
  7. formData:{PHPSESSID:'xxx', ajax:1},<!-- 对象和额外的数据发送到服务器端上传脚本与每一个文件上传 -->
  8. fileSizeLimit:'200KB',<!-- 限制文件大小 -->
  9. fileTypeDesc:'*.jpg;*.jpeg;*.gif;*.png;',<!-- 限制文件格式 -->
  10. fileTypeExts:'*.jpg;*.jpeg;*.gif;*.png;',<!-- 限制文件类型 -->
  11. fileObjName:'picUp',<!-- 为action中文件的名字一样,这样才能注入进来 -->
  12.  
  13. queueID:'fileQueue', <!-- ile对象的名称用在服务器端脚本 -->
  14.  
  15. buttonImage:'${contextPath}/styles/dwz/uploadify/img/add.jpg',<!-- 按钮图片的加载地址 -->
  16.  
  17. buttonClass:'my-uploadify-button', <!-- 按钮的类型,DWz封装好的类型,执行相应的类型即可 -->
  18. width:102,
  19.  
  20. auto:false<!-- 是否自动上传文件添加到队列中,false不能自动上传,进入队列,true自动上传 -->
  21. }"</span>
  1. <span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><!-- 照片集存取位置 -->
  2. <div id="fileQueue" class="fileQueue"></div>
  3.  
  4. <input type="image" src="${contextPath}/styles/dwz/uploadify/img/upload.jpg" onclick="$('#testFileInput2').uploadify('upload', '*');"/>
  5. <input type="image" src="${contextPath}/styles/dwz/uploadify/img/cancel.jpg" onclick="$('#testFileInput2').uploadify('cancel', '*');"/>
  6.  
  7. <div class="divider"></div>
  8. </span></span></span>

处理:UploadPicAction

  1. <span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">private File picUp;
  2. //文件名字(可以上传文件包含图片等等)
  3. private String picUpFileName;
  4. //文件的类型(struts2框架自带属性)
  5. private String picUpContentType;
  6. //获取文件全信息
  7. public File getPicUp() {
  8. return picUp;
  9. }
  10. //注入文件全信息你
  11. public void setPicUp(File picUp) {
  12. this.picUp = picUp;
  13. }
  14.  
  15. //获取文件名称
  16. public String getPicUpFileName() {
  17. return picUpFileName;
  18. }
  19.  
  20. //注入文件名称
  21. public void setPicUpFileName(String picUpFileName) {
  22. this.picUpFileName = picUpFileName;
  23. }
  24. //获取文件类型
  25. public String getPicUpContentType() {
  26. return picUpContentType;
  27. }
  28. //注入文件类型
  29. public void setPicUpContentType(String picUpContentType) {
  30. this.picUpContentType = picUpContentType;
  31. }
  32.  
  33. /**
  34. * 上传图片
  35. * @MethodName : uploadPic
  36. * @Description : 文件批量上传方法
  37. */
  38. public void uploadPic(){
  39. try {
  40. // 构造图片属性,key为属性名,value为属性值,属性任意。
  41. LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
  42. System.out.println(picUpFileName);
  43. // 存入filename属性,值为uploadFileName
  44. map.put("filename", picUpFileName);
  45. map.put("contentType", picUpContentType);
  46. //实例化MongoEao的对象
  47. MongoUtil mongoEao = new MongoUtil();
  48. //调用后台添加的方法,写入到mongodb数据库中
  49. mongoEao.uploadFile(picUp, picUpFileName+"_new", "gxpt_uas","uasStuPic", map);
  50.  
  51. //在提交form时设置了enctype="multipart/form-data",因此,从request中拿到的ContentType已经变了格式,
  52. //为Content-Type:multipart/form-data; boundary=-------7de6d232f022a,因此在response中重新设置ContentType
  53. System.out.println(request.getContentType());
  54. response.setContentType("text/html;charset=UTF-8");
  55. outMsg(AjaxObject.newOk( CommonConstant.OPETATE_SUCCESS).setCallbackType("").toString());
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. }/**
  60. * 上传图片
  61. * @MethodName : uploadPic
  62. * @Description : 文件批量上传方法
  63. */
  64. public void uploadPic(){
  65. try {
  66. // 构造图片属性,key为属性名,value为属性值,属性任意。
  67. LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
  68. System.out.println(picUpFileName);
  69. // 存入filename属性,值为uploadFileName
  70. map.put("filename", picUpFileName);
  71. map.put("contentType", picUpContentType);
  72. //实例化MongoEao的对象
  73. MongoUtil mongoEao = new MongoUtil();
  74. //调用后台添加的方法,写入到mongodb数据库中
  75. mongoEao.uploadFile(picUp, picUpFileName+"_new", "gxpt_uas","uasStuPic", map);
  76.  
  77. //在提交form时设置了enctype="multipart/form-data",因此,从request中拿到的ContentType已经变了格式,
  78. //为Content-Type:multipart/form-data; boundary=-------7de6d232f022a,因此在response中重新设置ContentType
  79. System.out.println(request.getContentType());
  80. response.setContentType("text/html;charset=UTF-8");
  81. outMsg(AjaxObject.newOk( CommonConstant.OPETATE_SUCCESS).setCallbackType("").toString());
  82. } catch (Exception e) {
  83. e.printStackTrace();
  84. }
  85. }</span></span></span>

struts-studentPic.xml:

  1. <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  3. "http://struts.apache.org/dtds/struts-2.0.dtd">
  4. <struts>
  5.  
  6. <constant name="struts.multipart.maxSize" value="20971520"/>
  7. <!-- 头像上传管理 -->
  8.  
  9. <package name="uploadMgr" namespace="/upload" extends="default">
  10.  
  11. <!-- 上传图片begin -->
  12.  
  13. <!--index页链接,跳转到上传页面 -->
  14. <action name="showPicMgrAction" class="uploadPicAction" method="showPicMgr">
  15. <result name="picMgr">/page/uploadify/uploadPic.jsp</result>
  16. </action>
  17. <!--index批量页链接,跳转到上传页面 -->
  18. <action name="showPicMgrPiLiangAction" class="uploadPicAction" method="showPicMgr">
  19. <result name="picMgr">/page/uploadify/uploadDuo.jsp</result>
  20. </action>
  21. <!--index批量页链接,跳转到上传页面 -->
  22. <action name="showPicMgrPiLiangOldAction" class="uploadPicAction" method="showPicMgr">
  23. <result name="picMgr">/page/uploadify/uploadOldDuo.jsp</result>
  24. </action>
  25. <!--上传图片 -->
  26. <action name="uploadPicAction" class="uploadPicAction" method="uploadPic">
  27. </action>
  28. <!--上传图片 -->
  29. <action name="uploadPicOldAction" class="uploadPicAction" method="uploadPicOld">
  30. </action>
  31. <!--查询指定图片,返回图片 -->
  32. <action name="getPicByIdAction" class="uploadPicAction" method="getPicById">
  33. </action>
  34.  
  35. <!--查询所有图片 -->
  36. <action name="showAllPicAction" class="uploadPicAction" method="showAllPic">
  37. <result name="picList">/page/uploadify/fileList.jsp</result>
  38. </action>
  39.  
  40. <!--查询指定图片,返回jsp页面 -->
  41. <action name="showPicByIdAction" class="uploadPicAction" method="showPicById">
  42. <result name="picList">/page/uploadify/fileList.jsp</result>
  43. </action>
  44.  
  45. <!--删除指定图片 -->
  46. <action name="deletePicByIdAction" class="uploadPicAction" method="deletePicById">
  47. </action>
  48.  
  49. <!-- 批量删除图片 -->
  50. <action name="deletePicByIdsAction" class="uploadPicAction" method="deletePicByIds">
  51. </action>
  52. <!--上传图片end -->
  53.  
  54. </package>
  55.  
  56. </struts></span>

spring-studentPic.xml,配置,控制反射注入

  1. <span style="font-size:18px;"><!--上传图片 -->
  2. <bean id="uploadPicAction" class="web.uas.UploadPic.Action.UploadPicAction" scope="prototype" >
  3.  
  4. </bean>
  5. </span>

效果图

文件提交成功

总结

这样的效果来说,还是不错的,很多内容它给封装到了框架里面,对于多文件上传,每一个文件会调用后台的action方法,这个也是其和Struts2的完美组合吧,细心+文档=实现,这部分内容还是需要我们多多的实战,对于框架而言要多用学习到的更多,收获更大.

接触(SSH+Web)框架大概有一个半月了,整体上可以体会到框架解决某一个问题,提供了很好的解决方案,简化了开发者写代码的粒度,我们这时要停下脚步,逐步的思考框架的原理?由来?思想?等等这才是我们真正该提高的部分.当然先用是入门的很重要的第一步.

SSH深度历险(九) Struts2+DWZ+Uploadify实现多文件(文件和图片等等)上传的更多相关文章

  1. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对比注解方式的优缺点)

    接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文采用强制的CGLB代理方式 Security ...

  2. SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP

    AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...

  3. Springmvc+uploadify实现文件带进度条批量上传

    网上看了很多关于文件上传的帖子,众口不一,感觉有点乱,最近正好公司的项目里用到JQuery的uploadify控件做文件上传,所以整理下头绪,搞篇文档出来,供亲们分享. Uploadify控件的主要优 ...

  4. SSH深度历险记(九) Struts2+DWZ+Uploadify多文件(文件和图片等。)上传

    在gxpt_uas系统,为了实现文件(文件和图片等.,灵活配置)批量上传到mongodb,在学习的过程中,知道mongodb,功能,实现思路:在DWZ的基础上參考官方的实例结合现有的GXPT来实现,期 ...

  5. SSH深度历险(七) 剖析SSH核心原理(一)

    接触SSH有一段时间了,但是对于其原理,之前说不出来莫模模糊糊(不能使用自己的语言描述出来的就是没有掌握),在视频和GXPT学习,主要是实现了代码,一些原理性的内容还是欠缺的,这几天我自己也一直在反问 ...

  6. jquery uploadify在谷歌浏和火狐下无法上传的解决方案(.Net版)

    在项目紧张的进行过程中,jquery uploadify上传不兼容的问题一直没有试着去解决,只幻想着用ie的人越来越多,怎么奈何firefox4刚推出,就有4000万的下载.......仰天长叹,记生 ...

  7. SSH深度历险(六) 深入浅出----- Spring事务配置的五种方式

    这对时间在学习SSH中Spring架构,Spring的事务配置做了详细总结,在此之间对Spring的事务配置只是停留在听说的阶段,总结一下,整体把控,通过这次的学习发觉Spring的事务配置只要把思路 ...

  8. SSH深度历险(三) EJB Session Bean有状态和无状态的差别与联系

    刚開始对两种sessionbean存在误解.觉得有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用.而觉得无状态是每次调用实例化一次,不保留用户信息.细致分析并用实践检验后,会发现,事实 ...

  9. SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

           在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...

随机推荐

  1. BZOJ4943 [NOI2017] 蚯蚓

    题目描述 蚯蚓幼儿园有nn 只蚯蚓.幼儿园园长神刀手为了管理方便,时常让这些蚯蚓们列队表演. 所有蚯蚓用从11 到nn 的连续正整数编号.每只蚯蚓的长度可以用一个正整数表示,根据入园要求,所有蚯蚓的长 ...

  2. 【Codeforces Round #435 (Div. 2) A B C D】

    CF比赛题目地址:http://codeforces.com/contest/862 A. Mahmoud and Ehab and the MEX ·英文题,述大意:      输入n,x(n,x& ...

  3. 为什么Unix只允许对非目录文件实行勾链?

    Unix文件系统的目录结构中带有交叉勾链,用户可以用不同的文件路径名共享一个文件,即文件的勾链在用户看来是为了一个已存在的文件另起一个路径名.在Unix的多级目录结构中勾链的结果表现为一个文件由多个目 ...

  4. HL7工具安装步骤

    下载目录:http://gforge.hl7.org/gf/ 说明:在安装HL7V3学习工具之前,确保本机已安装IIS服务和Access数据库. 各种软件见附件. 1.下载安装步骤   RIM模型下载 ...

  5. 如何避免 async/await 地狱

    简评:async/await 写着很爽,不过要注意这些问题. async/await 让我们摆脱了回调地狱,但是这又引入了 async/await 地狱的问题. 什么是 async/await 地狱 ...

  6. Linux——makefile编写

    以前对makefile的编写,限于刚开始接触,我都比较局限一些死板的格式,有时候就会显得有些繁琐.在进一步了解一些系统编译和链接的知识后,对makefile编写流程有了一些新的认识,所以来此梳理梳理, ...

  7. public、protected、default、private区别

    public.protected.default.private: 修饰符 本类 同包 子类 其他 public √ √ √ √ protected √ √ √ × default √ √ × × p ...

  8. linux系统下安装jdk,mysql,tomcat 和redis 和jedis入门案例

    Day47笔记Linux+redis入门 Day47   知识讲解:Jedis 1.Linux上jdk,mysql,tomcat安装(看着文档安装) 准备工作: 因为JDK,TOMCAT,MYSQL的 ...

  9. Errors running builder 'DeploymentBuilder' on project '工程名'

    打开myEclipse就会报 Errors running builder 'DeploymentBuilder' on project '工程名' xxxNullpointException 的错误 ...

  10. xshell连接centos与ubuntu

    操作系统:Windows 7 应用软件:Ware Workstation &Xshell 5 Linux:CentOS 7 Minimal &Ubuntu Server 16 ==== ...