Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。不过官方提供的实例是php版本的,本文将详细介绍Uploadify在java中的使用,您也可以点击下面的链接进行演示或下载。

        创建工程那些话就不多说了,上张图先看看项目结构。
        demo只是入门,所以比较简单。也更能够理解uploadify插件如何使用。
        学习struts2的人都知道,要使用struts2,首先要在web.xml中配置过滤器 。如:
1
2
3
4
5
6
7
8
9
<!-- struts2 过滤器 -->
 
        struts2
        <!-- org.apache.struts2.dispatcher.FilterDispatcher -->
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 
 
        struts2
        /*
        然后在WebContent目录下新建index.jsp页面,将下载好的uploadify插件所需的js、swf和css文件引入到页面。如:
1
2
    <link href="<%=basePath%>main/js/uploadify/uploadify.css" rel="stylesheet" type="text/css" /><script type="text/javascript" src="<%=basePath%>main/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="<%=basePath%>main/js/uploadify/jquery.uploadify-3.1.min.js"></script>
然后在jquery的ready的方法里面加入以下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
$(function() {
            $("#uploadFile").uploadify({
                'buttonText':'选择上传数据',
                'width'     : 200,
                'swf'       : '<%=basePath%>main/js/uploadify/uploadify.swf',
                'uploader'      : '<%=basePath%>uploadActionURl.action;jsessionid=<%=session.getId()%>',
                'cancelImage'     : '<%=basePath%>main/js/uploadify/uploadify-cancel.png',
                'method'        : 'get',
                'postData'      : {},
                'button_image_url':'<%=basePath%>',
                            'fileObjName' : 'uploadFile',
                            'auto' : false,
                            'multi' : true,
                            'queueID' : 'fileQueue',
                            'debug' : false,
                            'removeCompleted' : true,
                            'removeTimeout' : 0.5,
                            'requeueErrors' : true,
                            'progressData' : "all",
                            'queueSizeLimit' : 10,
                            'fileSizeLimit' : 50 * 1024 * 1024,
                            //  'fileTypeDesc'   : 'Excel2007,2003',
                            //  'fileTypeExts'   : '*.xlsx;*.xls',
                            'onUploadProgress' : function(file, bytesUploaded,
                                    bytesTotal, totalBytesUploaded,
                                    totalBytesTotal, queueBytesLoaded) {
 
                                $("#result").append(
                                        "</pre>
<div>文件\"" + file.name + "\"共"
 + totalBytesTotal + "字节,已上传"
 + totalBytesUploaded
 + "字节!</div>
<pre>
 
");
                                if (totalBytesUploaded == totalBytesTotal) {
                                    $("#result").append(
                                            "</pre>
<div>文件\"" + file.name
 + "\"上传成功!</div>
<pre>
 
");
                                }
                            },
                            'onUploadComplete' : function(file) {
                            },
                            'onUploadSuccess' : function(file, data, response) {
                                //  alert(data);
                                var retdata = eval("(" + data + ")");
                                alert(retdata.msg);
                                //提示消息
                                $("#result").append(
                                        "</pre>
<div>" + retdata.msg + "</div>
<pre>
 
");
                            },
                            'onUploadError' : function(file, errorCode,
                                    errorMsg, errorString, swfuploadifyQueue) {
                                $("#result").html(errorString);
                            },
                        });
    });
        jsp的body部分非常干净,几句代码就可以搞定。如:
1
2
3
4
5
6
7
8
9
</pre>
<div class="div_row1"><input id="uploadFile" type="file" name="uploadFile" />
<div id="fileQueue"></div>
<div id="result"></div>
<div id="progress"></div>
</div>
<pre>
    <a href="javascript:$('#uploadFile').uploadify('upload','*')">开始上传</a>
    <a href="javascript:$('#uploadFile').uploadify('cancel', '*')">取消上传队列</a>
    做到这步上传的效果是有了,但是action并没有处理。因此还需要一个action来处理上传的文件。
    一般的思路先要设置编码,防止中文乱码问题。然后截取文件的后缀名,根据系统时间重新生成一个文件名。再将文件复制到某个文件夹。或者是解析上传的数据,持久化到数据库。action代码较多,就不贴出来了。如果需要可以去http://pan.baidu.com/share/link?shareid=3798293928&uk=587859240下载,结合代码学习。下一章对uploadify常用的属性和方法做个说明。
        界面效果预览:
        点击上传,弹出上传成功对话框后。就能在D盘找到上传的文件了。

原创文章,转载请注明: 转载自java开发者

本文链接地址: Struts2+Uploadify文件上传使用详解

Struts2+Uploadify文件上传使用详解的更多相关文章

  1. Web应用安全之文件上传漏洞详解

    什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这 ...

  2. php文件上传原理详解(含源码)

    1.文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 2.客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-da ...

  3. jquery组件WebUploader文件上传用法详解

    这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一 ...

  4. FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解(转)

    1.StorageClient与StorageClient1的区别 相信使用happy_fish的FastDFS的童鞋们,一定都熟悉StorageClient了,或者你熟悉的是StorageClien ...

  5. ASP.Net大文件上传组件详解

    首先右键单击网站根目录,在弹出的快捷菜单中,选择"添加引用"菜单项,弹出"添加引用",切换到"浏览"找到组件的Dll文件"Best ...

  6. 七牛云存储Python SDK使用教程 - 上传策略详解

    文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k  ...

  7. jQuery.uploadify文件上传组件实例讲解

    1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

  8. struts2的文件上传

    在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来 ...

  9. jsp\struts1.2\struts2 中文件上传(转)

    jsp\struts1.2\struts2 中文件上传 a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现c.在sturts2中实现现在把Code与大家 ...

随机推荐

  1. Google Chrome 浏览器禁用缓存

    在使用 Google Chrome 浏览器调试 js 时,会发现修改完 js 不会立即生效,这是由于 chrome 浏览器缓存的原因,而在火狐下没有这个问题.经常使用 chrome 浏览器调试 js ...

  2. Java 延时常见的几种方法

    1. 用Thread就不会iu无法终止 new Thread(new Runnable() { public void run() { while (true) { test(); try { Thr ...

  3. Linux网络编程9——对TCP与UDP的简易封装2.0

    具体生成动态库的操作及使用该动态库的操作请参见上篇博文.以下仅仅列出改进版本的代码. 代码 my_socket.h #ifndef __MY_SOCKET_H__ #define __MY_SOCKE ...

  4. 关于如何使用Navicat(11.1.13) for MySQL如何创建存储过程

    1.ƒ()函数(右键)→新建函数(左键)→过程(选择) 2.会遇到的问题 问题一:因为sql语句默认以;为结束符,所以应该修改结束符,但是这在Navicat(11.1.13) for MySQL中是不 ...

  5. 【Apache运维基础(5)】Apache的Rewrite攻略(2)

    简述 .htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作 ...

  6. servlet学习笔记三

    Servlet主要内容: 1)状态跟踪 一.状态跟踪 HTTP协议是无状态协议,即请求与请求之间没有任何关系,也就是不会记住任何数据. 但若想在请求间传递数据,怎么办?web里的三个基本容器对象可以解 ...

  7. 天使投资、VC 以及 PE 的区别是什么?

    如果满足于“阶段不同”这个简单的回答,那你可能错过了一个思考资本与企业发展之间关系的机会. 首先要交待一下,在大众语境中,angel/VC/PE三者都可认为是VC,也就是人们常说的风险投资,在国内官方 ...

  8. iOS开发--UITableView

    -.建立 UITableView  DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)];  [Data ...

  9. SPRING IN ACTION 第4版笔记-第十一章Persisting data with object-relational mapping-005Spring-Data-JPA例子的代码

    一.结构 二.Repository层 1. package spittr.db; import java.util.List; import org.springframework.data.jpa. ...

  10. 美丽渐变色的Form

    一直都非常喜欢渐变色的界面,但是没想到漂亮的渐变Form原来这么简单...实在是没想到...看来我不仅技术水平低,脑袋里的创意也是空空如也... --------------------------- ...