`
erikchang
  • 浏览: 50473 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

fancyupload3在web中的完美整合

阅读更多
fancyupload是一个利用flash实现多文件上传的项目,官方网站为http://digitarald.de/project/fancyupload/,在一次项目中需要实现多文件上传,Google了一圈,没有找到一个能用的,只有上fancyupload的官方网站看了,发现fancyupload2在IE中已经不可用了,总是提示如下:

其原因作者也没有做出说明,这里笔者也不敢评论!
fancyupload是一个不错的东西,只是它的升级是跨越式的,2.0的使用方式在3.0中有点问题,所以这里就3.0的提出一些注意事项。
1、3.0的应用包不能和2.0混淆,在本文的最后提供整个包下载;
2、3.0的flash文件和前面版本差别太多,所以如果使用的flash版本不对肯定达不到预期的效果
3、官方网站使用的是php上传,目前网上还没有提出任何一个使用servlet上传的,有提出jsp上传的,笔者测试过代码不可用,而且其代码是一次性读取输入流来完成的,这个应该不可取,经测试发现,由于实现的是多文件提交,一次性输入流就会获取所有文件的大小,根本不能区别单个文件。所以在使用servlet或者jsp上传时也要使用form提交的获取方式,上传代码这里不贴出来了,有兴趣的同学可以和我联系,我给个人发一下。

下面介绍一下使用方法:
首先导入js文件:
<script language="javascript" type="text/javascript" src="js/mootools.js"></script>
<script language="javascript" type="text/javascript" src="js/Swiff.Uploader.js"></script>
<script language="javascript" type="text/javascript" src="js/Fx.ProgressBar.js"></script>
<script language="javascript" type="text/javascript" src="js/FancyUpload2.js"></script>

由于js加载顺序问题,这个导入的顺序不要乱套,否则可能出现问题,其中mootools.js只是用来解析返回的json数据的,测试发现这里解析时有点问题,不建议使用该工具。
然后再页面初始化中初始化FancyUpload对象,代码如下:
 window.addEvent('load', function() { 
	  var up = new FancyUpload2($('demo-status'), $('demo-list'), { 
		verbose: true,
		url: 'employeeManage.jhtml?method=importElec&uid='+$map.get("id"),
		path: 'flash/Swiff.Uploader.swf',
		typeFilter: {
			'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'
		},
	   target: 'demo-browse',
		onLoad: function() {
			$('demo-status').removeClass('hide'); 
			$('demo-fallback').destroy(); 
			this.target.addEvents({
				click: function() {
					return false;
				},
				mouseenter: function() {
					this.addClass('hover');
				},
				mouseleave: function() {
					this.removeClass('hover');
					this.blur();
				},
				mousedown: function() {
					this.focus();
				}
			});
	
			$('demo-clear').addEvent('click', function() {
				up.remove(); // remove all files
				return false;
			});

			$('demo-upload').addEvent('click', function() {
				up.start(); // start upload
				return false;
			});
		},
		 
		onSelectFail: function(files) {
			files.each(function(file) {
				new Element('li', {
					'class': 'validation-error',
					html: file.validationErrorMessage || file.validationError,
					title: MooTools.lang.get('FancyUpload', 'removeTitle'),
					events: {
						click: function() {
							this.destroy();
						}
					}
				}).inject(this.list, 'top');
			}, this);
		},
		
		onFileSuccess: function(file, response) {
		    response="{status:1}";
			var json = new Hash(JSON.decode(response, true) || {});
			if (json.get('status')=='1') {
				file.element.addClass('file-success');
				file.info.set('html', '<strong>电子档案已经上传:</strong> ' + json.get('width') + ' px ' + json.get('height') + ' px, <em>' + json.get('mime') + '</em>)');
			} else {
				file.element.addClass('file-failed');
				file.info.set('html', '<strong>发生错误:</strong> ' + (json.get('error') ? (json.get('error') + ' #' + json.get('code')) : response));
			}
		},
		onFail: function(error) {
			switch (error) {
				case 'hidden': // works after enabling the movie and clicking refresh
					alert('To enable the embedded uploader, unblock it in your browser and refresh (see Adblock).');
					break;
				case 'blocked': // This no *full* fail, it works after the user clicks the button
					alert('To enable the embedded uploader, enable the blocked Flash movie (see Flashblock).');
					break;
				case 'empty': // Oh oh, wrong path
					alert('A required file was not found, please be patient and we fix this.');
					break;
				case 'flash': // no flash 9+ :(
					alert('To enable the embedded uploader, install the latest Adobe Flash plugin.')
			}
		}
		
	});
	
});

代码中有一些div的Id,是将FancyUpload的一些属性和页面div绑定,接着就是页面代码:
</fieldset>
<div id="demo-status" class="hide">
<p><a href="#" id="demo-browse">选择电子档案</a> | <a href="#"
	id="demo-clear">清除列表</a> | <a href="#" id="demo-upload">开始上传</a></p>
<div>
			<strong class="overall-title"></strong><br />
			<img src="images/bar.gif" class="progress overall-progress" />
	</div>
		<div>
			<strong class="current-title"></strong><br />
			<img src="images/bar.gif" class="progress current-progress" />
		</div>
<div class="current-text"></div>
</div>
<ul id="demo-list"></ul>

这样就完成了fancyupload的加载!
关于fancyupload相关属性的说明这里不再重复,可以看官方网站也可以看http://www.iteye.com/topic/144518这篇帖子!
  • 大小: 6.2 KB
分享到:
评论
3 楼 mogui258 2009-11-04  
能不能给我一份,谢谢!
2 楼 mogui258 2009-11-04  
能不能给我一份啊,523058394@qq.com
1 楼 erikchang 2009-07-11  
看到不少有关fancyupload2的使用jsp上传的例子,个人认为不使用,不能使用输入流来保存数据,这样会造成内存消耗过大,对服务器的负载过大,同时多文件上传也不能一次性保存数据!

相关推荐

    FancyUpload

    这个组件以其独特的设计和丰富的特性,在Web开发领域中受到广泛关注。以下将详细阐述FancyUpload的工作原理、主要特点以及如何在实际项目中进行集成和使用。 1. **工作原理**: - 分块上传:FancyUpload支持分块...

    fancyupload

    在【描述】中提到,fancyupload的整个工程是基于utf-8编码的,这意味着它能够很好地支持各种国际字符集,不会出现乱码问题,对于全球化网站来说非常友好。开发者将源代码开源,这为其他开发者提供了参考和定制的可能...

    fancyupload批量上传文件

    FancyUpload是一款强大的JavaScript文件上传组件,它支持多文件选择,使得用户可以在一次操作中上传多个文件,极大地提升了用户体验。这个JSP例子展示了如何在Tomcat应用服务器上部署并使用FancyUpload,确保了文件...

    digitarald-digitarald-fancyupload-3.0.1-0-g66b5582.zip

    3. **Flash与Ajax融合**:Flash技术确保了跨平台的兼容性,尤其是在处理大文件和复杂交互时表现优秀;而Ajax则提供了无刷新的页面更新,使得用户在上传文件的同时可以继续浏览和操作其他页面内容。 4. **MooTools...

    swfupload+fancyupload两个完整java项目

    SwfUpload 和 FancyUpload 是两种流行的JavaScript库,用于在Web应用程序中实现文件上传功能,尤其适用于需要处理大量或大文件的场景。这两个Java项目提供了完整的实现,可以在Eclipse环境中进行测试,确保了与...

    Ajax+Flash多文件上传之FancyUpload的应用

    3. 初始化FancyUpload:在JavaScript中调用FancyUpload的初始化方法,配置上传参数和回调函数。 4. 调整样式:根据需要对FancyUpload的外观进行定制,例如更改按钮样式或进度条颜色。 5. 处理上传结果:在回调函数中...

    FancyUpload批量上传文件

    Ajax+Flash多文件上传是一个开源的上传组件,名称是FancyUpload,其官方网址是:http://digitarald.de/project/fancyupload/。这个组件仅仅是客户端的应用组件,即与任何服务器端的技术...下载文件后将其复制到项目中

    无刷新上传文件

    在给定的"fancyupload3在web中的完美整合"示例中,fancyUpload可能是一个用于无刷新上传的JavaScript库。这类库通常提供了一套完整的解决方案,包括用户界面、进度显示、错误处理和多文件上传等功能。FancyUpload...

    FancyUpload3.0最新版 For Asp.net Demo(已汉化)

    之前FancyUpload2.0版本的在IE下已不能用了。在网上FancyUpload 3.0 结合Asp.net 使用的例子几乎找不到,所以就做了一个FancyUpload 3.0 For Asp.net 的Demo,方便大家学习或使用。 这个Demo 在IE各个版本和Firefox...

    ajax上传即fancyUpload上传完整例子

    在IT行业中,Ajax(Asynchronous JavaScript and XML)和FancyUpload是两种常见的文件上传技术,它们都致力于提供更优秀的用户体验,尤其是对于Web应用程序中的文件上传功能。Ajax上传允许用户在不刷新整个页面的...

    digitarald-digitarald-fancyupload.zip

    开发者可以下载此压缩包,解压后获取到源代码,以便在自己的 Delphi 项目中集成或参考FancyUpload的功能。 【标签】"Delphi" 指出这个项目是使用 Delphi 编程语言开发的。Delphi 是一种基于 Object Pascal 的集成...

    fancyupload2.0实现多文件上传-jsp

    NULL 博文链接:https://struts.iteye.com/blog/281691

    开源的多文件上传采用JavaScript插件

    在描述中提到了"Fancyupload插件",这是一款流行且功能丰富的多文件上传工具。由于旧版Flash 10插件存在错误,开发者进行了错误修复,使得该插件能够在新的Flash环境中正常工作。Fancyupload不仅支持JavaScript,还...

    digitarald-fancyupload, Swiff满足Ajax强大而优雅的上传( MooTools插件) 功能.zip

    digitarald-fancyupload, Swiff满足Ajax强大而优雅的上传( MooTools插件) 功能 FancyUpload - Swiff满足 Ajax以英镑为代价的Swiff 满足了强大而优雅的上传功能的收费。 FancyUpload是一个文件输入替换,它具有一个...

    QFrancyupload

    在ASP.NET开发环境中,FancyUpload是一个非常流行的前端文件上传组件,它提供了用户友好的界面和灵活的上传功能。FancyUpload通常与Flash技术结合,允许用户批量上传文件,同时支持进度条显示,大大提升了用户体验。...

    fancyuplod上传

    在本文中,我们将深入探讨FancyUpload的特性、配置选项、自定义样式以及如何在项目中集成它。 1. **FancyUpload特性** - **多文件上传**:FancyUpload支持多文件选择和批量上传,用户可以在一次操作中选择多个文件...

    Ajax+flash选择多文件上传(asp.net)

    在这个示例中,FancyUpload被用来实现无刷新的多文件选择和上传。 4. **ASP.NET(C#)**:Microsoft的ASP.NET框架是用于构建Web应用程序的平台,C#是其常用的一种编程语言。在这个案例中,我们将使用ASP.NET的服务器...

    多文件上传AJAX代码

    在现代Web应用中,用户经常需要上传多个文件,如图片、文档或音频文件。传统的文件上传方式往往只能处理单个文件,并且会刷新整个页面,影响用户体验。为了解决这个问题,"多文件上传AJAX代码"应运而生。这是一种...

Global site tag (gtag.js) - Google Analytics