Uploadify是一个基于Jquery的文件上传组件,官网http://www.uploadify.com/可以在官网获得该组件,运行演示示例,下载帮助文档。 
    作为Web前端的增强技术,Jquery给用户以更好的体验和交互,增强富互联网客户端特效,而基于Jquery的Uploadify更是将文件上传效果发挥到极致。 
    一个项目下,需要开发一个上传文件的应用,项目基于Struts2,传统使用input标签的file属性上传是同步的,没有实时效果的。为了增强体验,一个偶然的机会让我发现了这个组件Uploadify。但是官方仅提供基于PHP的上传源码,那么在Struts2下的,就得自行研究了。 
    废话不多说,让我们一步一步领略Uploadify带来的不同感受。 
1.支持的文件 
jquery.js,jquery.uploadify.js,uploadify.css;怎获得就不多说了。 
2.HTML页面源码

  1. <style type="text/css">
  2. div.demo {
  3. padding: 20px;
  4. border: 1px solid #E5E5E5;
  5. margin-bottom: 20px;
  6. #FFFFFF;
  7. }
  8. </style>
  1. <script language="javascript" src="/js/swfobject.js"></script>
  2. <script type="text/javascript">
  3. $(document).ready(function() {
  4. $("#upload").uploadify({        'uploader'       : '${base}/images/swf/uploadify.swf',
  5. 'script'         : 'disk!uploadFile.action',
  6. 'cancelImg'      : '${base}/images/cancel.png',
  7. 'fileDataName'   : 'upload',
  8. 'folder'         : '/',
  9. 'displayData'    : 'speed',
  10. 'buttonText'     : 'Browse Files',
  11. 'auto'           : false,
  12. 'multi'          : true,
  13. 'sizeLimit'      : 1073741824,
  14. 'simUploadLimit' : 3
  15. });
  16. });
  17. </script>
  1. <div class="demo" style="display:none" id="upload_file">
  2. <p><strong>文件上传</strong></p>
  3. <input id="upload" name="upload" type="file" />
  4. <a href="javascript:$('#upload').uploadifyUpload();">开始上传</a> | <a href="javascript:$('#upload').uploadifyClearQueue();">清除队列</a>
  5. </div>

解释: 
1).css是文件上传框的效果,不多说 
2).重点是JS代码,基于Jquery的技术,函数头就不多解释了。 
    uploader:是组件自带的flash,用于打开选取本地文件的按钮 
    scrpit:处理上传的路径,这里使用Struts2,当然是XXX.action 
    cancelImg:取消上传文件的按钮图片,就是个叉叉 
    fileDataName:和input的name属性值保持一致就好,Struts2就能处理了 
    folder:没研究这个,根据帮助文档就写上/ 
    displayData:有speed和percentage两种,一个显示速度,一个显示完成百分比 
    buttonText:出现在Flash上的文字,暂时还不支持中文 
    auto:是否选取文件后自动上传 
    multi:是否支持多文件上传 
    sizeLimit:限制文件的大小,这里是1G,做测试 
    simUploadLimit:每次最大上传文件数 
3).最后的html段提供两个功能按钮,点击开始上传和清除上传队列 
3.Action源码

  1. private File upload;//和HTML中input标记name同名
  2. private String uploadFileName;//Struts2拦截器获得的文件名
  3. public void setUpload(File upload) {
  4. this.upload = upload;
  5. }
  6. public void setUploadFileName(String uploadFileName) {
  7. this.uploadFileName = uploadFileName;
  8. }
  9. public String uploadFile() throws Exception {
  10. //省略数据处理步骤
  11. upload.renameTo(new File(realURL));
  12. //省略数据库写入步骤
  13. return "uploadFile";
  14. }

效果图 
 

在Struts2中使用Uploadify组件上传文件的更多相关文章

  1. 前台利用jcrop做头像选择预览,后台通过django利用Uploadify组件上传图最终使用PIL做图像裁切

    之前一直使用python的PIL自定义裁切图片,今天有需求需要做一个前端的选择预览页面,索性就把这个功能整理一下,分享给大家. 实现思路: 1.前端页面: 用户选择本地一张图片,然后通过鼠标缩放和移动 ...

  2. mvc中使用uploadify批量上传的应用

    网上找了很多资料都没有发现一个好用.可以用的uploadify批量上传的应用,这里通过官方和自己的一些项目需要整理了一个出来. 希望能帮助到需要的人. 效果图:

  3. 使用commons-fileUpload组件上传文件

    在近期的一个项目中有用到commons-fileUpload组件进行实现文件上传的功能(由于没用到框架),在使用的过程中有遇到一些问题,经过自己的琢磨也算顺利地将其解决了,在这里做个记录. 一.com ...

  4. node.js+react全栈实践-Form中按照指定路径上传文件并

    书接上回,讲到“使用同一个新增弹框”中有未解决的问题,比如复杂的字段,文件,图片上传,这一篇就解决文件上传的问题.这里的场景是在新增弹出框中要上传一个图片,并且这个上传组件放在一个Form中,和其他文 ...

  5. EasyUI 关于IE使用window组件上传文件

    有时候IE会对使用window组件上传文件(第二次)不生效,解决方案是: 将该window每次打开的时候,使用: $('#adUploadWindow').window('refresh', 'pan ...

  6. 关于commons-fileupload组件上传文件中文名乱码问题

    java web开发,常用到的文件上传功能,常用的commons-fileupload和commons-io两个jar包.关于如何使用这两个jar来完成文件上传的功能,这里不做详解.使用commons ...

  7. uploadify+批量上传文件+java

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. javaweb-番外篇-Commons-FileUpload组件上传文件

    一.Commons-FileUpload简介 Commons-FileUpload组件 Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件 ...

  9. Ant Design Upload 组件上传文件到云服务器 - 七牛云、腾讯云和阿里云的分别实现

    在前端项目中经常遇到上传文件的需求,ant design 作为 react 的前端框架,提供的 upload 组件为上传文件提供了很大的方便,官方提供的各种形式的上传基本上可以覆盖大多数的场景,但是对 ...

随机推荐

  1. Win32/MFC的基本概念

    一.MFC的基本概念 单文档.多文档和对话框框架的区别 MFC中的类继承图的基本框架 CView类与CDocument的关系 Onpaint()和Ondraw()的关系 hdc-cdc区别联系 RUN ...

  2. Webservice-Java-CXF

    1)首先呢,还是包的问题,在http://cxf.apache.org/download.html这里可以下到最新版的CXF,当然,我用的是最新版的.接下来还是那句废话,建WEB项目,放入JAR包.而 ...

  3. ORACLE SEQUENCE 介绍

    在oracle中sequence就是所谓的序列号,每次取的时候它会自己主动添加,一般用在须要按序列号排序的地方.  1.Create Sequence  你首先要有CREATE SEQUENCE或者C ...

  4. 关于SVN版本控制器的问题与解决方法

    1.SVN Working copy is too old 有个.svn的文件夹,去掉在commit试试! 2.中文字符变乱码 尽量不要用中文命名文件,因为很多软件对中文的支持还是有不好的地方.

  5. IOS 原生解析JSON 问题

    服务器----WebService 返回的是JSON数据 IOS解析报错: Error Domain=NSCocoaErrorDomain Code=3840 "Unable to conv ...

  6. JS高级程序设计学习笔记之RegExp类型

    创建正则表达式: 字面量形式定义正则表达式: Var expression = / pattern /flags ;pattern部分可以使任意简单或复杂的正则表达式.每个正则表达式可以带有一个或多个 ...

  7. (转)IIS5.1的安装配置并发布ASP.NET网站

    最近跟老师做一个桥梁养护系统的项目,要求用VS2008+Sql Server2000,服务器用IIS.由于之前做过的ASP.NET项目都是用的VS内置的服务器,并没有使用过IIS,第一次搭,花了几个小 ...

  8. CentOS 6.5 伪分布式 安装 hadoop 2.6.0

    安装 jdk -openjdk* 检查安装:java -version 创建Hadoop用户,设置Hadoop用户使之可以免密码ssh到localhost su - hadoop ssh-keygen ...

  9. http断点续传原理

    断点续传一是断点,一续传. 断点是在下载时,将下载文件分多片,同时进行多片一起下载,如果任务被暂停,暂停的位置就是断点. 续传就是未完成的下载再次开始时,会从上次的断点继续传送. 在下载(或上传)过程 ...

  10. C#基本语句与C++区别

    条件语句必须为bool表达式 int a = 1; if(a) { ... } 在c++中可以,但c#报错 但 bool b = true;//不能写成b = 1了: if(b) { ... } 是可 ...