精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-28
一、 简单说明<o:p></o:p> Ajax+Flash多文件上传是一个开源的上传组件,名称是FancyUpload,其官方网址是:http://digitarald.de/project/fancyupload/。这个组件仅仅是客户端的应用组件,即与任何服务器端的技术没有关系,服务器端可以采用任何后台技术(如JSP、Servlet、ASP等)。应用该组件提供给我们的最大的好处有如下几点(个人认为,呵呵): <o:p></o:p> n 可以同时选择多个文件进行上传; n 以队列的形式排列要上传的文件和其相关信息(如名称、大小等)(美观^_^); n 可以设置要上传的文件个数、文件类型和文件大小(实用^_^); n 有上传进度显示(感觉这个非常直观,很方便实用); n 上传的过程中可以随时取消要上传的文件; n 平台独立性,由于使用flash和成熟的AJAX框架(mootools)可以避免对特定浏览器和服务器依赖! n 使用简单,文件体积小!(这个才是最实在的,呵呵) n 表单无须设置enctype="multipart/form-data"了(这个有点意思吧) <o:p> </o:p> 二、 应用部署<o:p></o:p> 文件夹fancyupload中的文件就是该组件所需要到的所有文件了,包括四个JS、二个图片、一个swf文件,另外还包含一个简单的测试html页面,其文件结构如下: <o:p> </o:p>
将整个文件夹copy到你的web应用目录即可,使用的时候其步骤和代码如下: <o:p></o:p> Ø 引入JS文件 <o:p></o:p> Ø 在页面上设置CSS样式(主要是文件列表和上传进度的样式) <o:p></o:p> Ø 在onload方法中调用如下代码: <o:p></o:p> Ø 在页面上设置类似mytest.html中的body区域的代码即可! <o:p> </o:p> <o:p></o:p> 来看一个文件上传的实际效果,如下图:
<o:p></o:p> 三、 FancyUpload的参数说明<o:p></o:p> u url u swf u multiple u queued u types u limitSize u limitFiles u createReplacement u instantStart u allowDuplicates u container u optionFxDuration u queueList u onComplete u onAllComplete <o:p> </o:p> 四、 表单文件域和参数同时上传实战<o:p></o:p> 在你自己试过这个上传组件后,是不是感觉非常好用的,但同时你也或许发现了一个问题,那就是表单中的参数怎么进行上传的问题。因为该组件是采用FLASH+AJAX进行上传的,即页面是不刷新的,而且上传的过程中仅仅是上传了你选择的文件,而所有的表单非文件域参数则被忽略了。那我们如何来进行文件和参数的同步上传呢,这里有几个问题要注意的就是: <o:p></o:p> 1) 由于该组件是绑定了表单的submit方法,所以不能够直接在js中使用$(‘表单ID’).submit()这样的方式来进行表单上传,否则参数是传上去了而文件则没有; 2) 如果没有做设置那么只要选择了文件而且触发了表单的submit事件,那么该组件就会开始上传文件,即使我们加了onsubmit方法中的return false也无效; 3) 在第二条的基础上我们如何保证用户既选择了文件而且又输入了表单的所有必填参数呢? <o:p></o:p> 这些问题在经过本人一天的实际摸索后,终于得到了解决,呵呵,现说明如下: <o:p></o:p> 1) 首先是上传前的参数检查 <o:p> </o:p> 2) 表单提交 <o:p> </o:p> 3) 上传文件的路径和表单参数的绑定 <o:p> </o:p> 所以通过以上三个步骤后我们就可以实现文件的无刷新上传和进度显示了!^_^另外这个分步进行上传是相对表单参数比较多的情况,如果参数比较少的话可以直接将参数附加在URL地址后面进行也是可以的,这就要靠个人的发挥了。 <o:p> </o:p> Good Luck! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-12-28
我下载了怎么不能上传呀!
|
|
返回顶楼 | |
发表时间:2008-04-23
进度条都己经显示Completed了,到服务器去看,为什么没看到上传上来的文件啊?
|
|
返回顶楼 | |
发表时间:2008-05-27
在struts中集成,在Action中怎么取得要上传文件的信息呢(文件名,大小,类型等)?
|
|
返回顶楼 | |
发表时间:2008-07-31
朋友,能不能给个能跑起来的例子,这个上传不了啊?
|
|
返回顶楼 | |
发表时间:2008-08-03
to guying1028
附件里的例子是可以跑的,但是需要服务端的支持,你可以找到那个url地址,然后再本地建立一个web应用,设置一样的路径即可。 to pn2008 struts2中有文件上传拦截器,直接配置后就可以用了,上传过程不需要理会,action中会有一个File对象的。 |
|
返回顶楼 | |
发表时间:2008-11-15
现在不行了,需要支持flash10的版本出现
|
|
返回顶楼 | |
发表时间:2008-11-20
的确不能用了。需要支持flash10的版本出现
|
|
返回顶楼 | |
浏览 33687 次