链接地址:http://baike.baidu.com/view/1332553.htm
什么是SWFUpload[size=large]?[/size]
SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统<input type="file" />标签的文件上传模式。
SWFUpload的主要特点
* 可以同时上传多个文件; * 类似AJAX的无刷新上传; * 可以显示上传进度; * 良好的浏览器兼容性; * 兼容其他JavaScript库 (例如:jQuery, Prototype等); * 支持Flash 8和Flash 9; SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTML、CSS和JavaScript来随心所欲的定制它在浏览器下的外观;它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程中更新页面内容来营造各种动态效果。 在使用SWFUpload之前,请确认你具备一定的JavaScript和DOM知识。在实际开发中,大部分的错误都是由于错误的设置和低劣的Event Handlers处理程序所造成的。
效果演示
* Classic Form Demo http://demo.swfupload.org/formsdemo ; * Features Demo http://demo.swfupload.org/featuresdemo ; * Application Demo http://demo.swfupload.org/applicationdemo ; * v1.0.2 Plugin Demo http://demo.swfupload.org/v102demo ;
选择合适的Flash控件
在发行包(SWFUpload v2)中含有2个版本的Flash控件(swfupload_f8.swf 与wfupload_f9.swf),其中第一个版本拥有最佳的兼容性,但是为此损失了部分功能;而第二个版本提供了一些附加的功能但是损失了兼容性。
SWFUpload的初始化与配置
首先,在页面中引用SWFUpload.js ,如
<script type="text/javascript" src="http://www.swfupload.org/swfupload.js"></script>
然后,初始化SWFUpload ,如
var swfu;
window.onload = function () {
swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload_f9.swf", file_size_limit : "20480"
});
};
以下是一个标准的SWFUpload初始化设置所需的参数,你可以根据需要自己进行删减: {
upload_url : "http://www.swfupload.org/upload.php", 处理上传请求的服务器端脚本URL
file_post_name : "Filedata", 是POST过去的$_FILES的数组名 post_params : {
"post_param_name_1" : "post_param_value_1", "post_param_name_2" : "post_param_value_2", "post_param_name_n" : "post_param_value_n"
},
file_types : "*.jpg;*.gif", 允许上传的文件类型 file_types_description: "Web Image Files", 文件类型描述 file_size_limit : "1024", 上传文件体积上限,单位MB file_upload_limit : 10, 限定用户一次性最多上传多少个文件,在上传过程中,该数字会累加,如果设置为“0”,则表示没有限制
file_queue_limit : 2, 上传队列数量限制,该项通常不需设置,会根据file_upload_limit自动赋值 flash_url : "http://www.swfupload.org/swfupload_f9.swf", Flash控件的URL
flash_width : "1px",
flash_height : "1px",
flash_color : "#FFFFFF",
debug : false, 是否显示调试信息
swfupload_loaded_handler : swfupload_loaded_function, 当Flash控件成功加载后触发的事件处理函数
file_dialog_start_handler : file_dialog_start_function, 当文件选取对话框弹出前出发的事件处理函数
file_queued_handler : file_queued_function, file_queue_error_handler : file_queue_error_function, file_dialog_complete_handler : file_dialog_complete_function, 当文件选取对话框关闭后触发的事件处理函数
upload_start_handler : upload_start_function, 开始上传文件前触发的事件处理函数
upload_progress_handler : upload_progress_function, upload_error_handler : upload_error_function, upload_success_handler : upload_success_function, 文件上传成功后触发的事件处理函数
upload_complete_handler : upload_complete_function, debug_handler : debug_function,
custom_settings : { 自定义设置 custom_setting_1 : "custom_setting_value_1", custom_setting_2 : "custom_setting_value_2", custom_setting_n : "custom_setting_value_n",
}
}
SWFUpload中的File Object
在SWFUpload的使用过程中,无论在客户端还是服务器端都要和File Object打交道,在一个File Object中包含了以下内容:
{
id : string, // SWFUpload file id, used for starting or cancelling and upload
index : number, // The index of this file for use in getFile(i) name : string, // The file name. The path is not included.
size : number, // The file size in bytes
type : string, // The file type as reported by the client operating system
creationdate : Date, // The date the file was created modificationdate : Date, // The date the file was last modified filestatus : number, // The file's current status. Use SWFUpload.FILE_STATUS to interpret the value.
}
SWFUpload中的方法
+ setPostParams (param_object)
- 描述
动态修改SWFUpload初始化设置中的post_params属性,其中所有的值都将被覆盖。
- 参数 param_object:一个simple JavaScript object,所有的name/value都必须是字符串,例如(this.setPostParams({ "Mari": name });)。
- 返回 void
SWFUpload中的事件
SWFUpload在运行过程中提供了多种事件,这些事件可以让开发者借助句柄来改变页面UI、改变行为,或者报告错误。所有这些事件都可以在一个SWFUpload实体中被调用,这意味着在这些事件对应的函数中,你可以用 this 关键字来代替引用SWFUpload实体。
+ fileDialogComplete (number of files selected)
- 触发条件
1. 用户选择好了要上传文件,并关闭对话框;
2. 用户什么也没选,并取消对话框;
如果你希望在用户选择完文件后自动开始上传操作,那么可以将 this.startUpload() 操作放在这里。
- 传入参数
number of files selected:将返回用户所选取的文件个数。
+ uploadStart (file object)
- 触发条件
该事件在文件上传之前触发,它用于完成一些准备工作,比如传递参数;负责响应该事件的句柄函数可以有2个返回值(true 或 false)当返回值为false时,整个上传将被取消;当返回值为true时上传过程继续进行。而如果返回值为false,则通常是由一个uploadError事件所导致的。
注:官方帮助文档的原文中对该事件的描述中有这样一句:“If you return 'true' or do not return any value then the upload proceeds.”,从中可以看到既定的设计是当不返回任何值的时候应该等同于返回true,但是笔者在开发中发现必须明确返回值,否则上传进程将停止响应,不知是否是一个bug呢?
- 传入参数
file object:文件对象
+ uploadComplete (file object)
- 触发条件
在完成一个上传周期后(在uploadError 或 uploadSuccess之后),此时一个上传操作已经结束,另一个上传操作可以开始了。
- 传入参数
file object:文件对象
+ uploadProgress (file object, bytes complete, total bytes)
- 触发条件
该事件在整个文件的上传过程中定期性的被Flash控件自动触发,用以帮助开发者实时更新页面UI来制作上传进度条。
注意:该事件在Linux版本的Flash Player中存在问题,目前还无法解决。
- 传入参数
file object:文件对象
bytes complete:已经上传完毕的文件字节数
total bytes:文件总体积的字节数
常见错误
■ 所上传的文件体积并未超出SWFUpload所设置的数值,但为何无法成功上传?
□ 通常这是由于服务器端的限制所造成的,以Apache+PHP为例,请修改php.ini中的post_max_size与upload_max_filesize两项设置。
■ 在带有Session验证的网站后台中SWFUpload无法正常工作?
□ 这是因为SWFUpload在上传时相当于重新开辟了一个新的Session进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来“找回”其应有的Session。
■ 关于swfupload上传中文文件名乱码的问题
□ 实际上是由于编码的问题造成的,程序使用的utf-8,文件名传递时也是这种编码,因此造成乱码或文件不能保存,仅是需要修改接收文件,以PHP为例,upload.php中 $file_name = $_FILES[$upload_name]['name'];
$file_name=iconv("UTF-8","GB2312",$file_name);
这样即可解决。
分享到:
相关推荐
这个“swfupload例子”压缩包很可能是包含了一个或者多个示例代码或项目,帮助开发者理解和应用SwfUpload。 SwfUpload 的工作原理是这样的:在用户选择文件后,这些文件会被预先加载到Flash对象中,然后在后台批量...
在“SWFUpload例子”中,我们可以看到一个简单的示例,它演示了如何在网页中集成SWFUpload,以提供高效且用户友好的文件上传体验。 SWFUpload的核心功能包括: 1. **多文件选择**:SWFUpload支持用户一次选择多个...
在这个"四、struts2+swfUpload例子二"中,我们将深入探讨如何将这两者结合,以实现高效的文件上传功能。 首先,为了集成Struts2和SwfUpload,我们需要在项目中引入相应的依赖库。对于Struts2,这通常包括struts2-...
**SwfUpload 知识点详解** SwfUpload 是一个开源的Flash上传组件,它允许在Web应用程序中实现多文件上传功能。这个组件利用了Flash技术来绕过浏览器的一些限制,比如JavaScript通常不能处理大文件的上传或者一次...
### SWFUpload与Java实例详解 #### SWFUpload概述 SWFUpload是一个强大的Flash和JavaScript组件,用于实现浏览器上的多文件无刷新上传功能。通过利用Flash技术,它能够跨浏览器和平台提供一致的用户体验,同时提供...
这个例子可能包含了一个使用SWFUpload技术的具体示例,帮助我们理解如何在网站上集成这个强大的工具。SWFUpload利用Flash插件在后台批量上传文件,提供了良好的用户体验,如进度条显示、多文件选择等特性。 1. **...
SWFUpload是一个优秀的JavaScript库,它利用Flash技术实现了多文件选择、预览、进度条显示等功能,为文件上传提供了更为高级的用户体验。本文将详细讲解如何使用PHP、jQuery和SWFUpload来创建一个高效的文件上传实例...
在本例中,"swfupload例子"压缩包中包含了必要的文件,包括SWFUpload的主文件(如`swfupload.swf`)、JavaScript库(如`swfupload.js`)以及相关的CSS样式文件。将这些文件放在合适的目录下,并确保它们在HTML页面中...
**SWFUpload 简介** SWFUpload 是一个开源的JavaScript库,它允许开发者在网页上实现高级的文件上传功能。这个库利用了Flash技术,可以在不刷新页面的情况下进行多文件选择和上传,提供了良好的用户体验。SWFUpload...
综上所述,"asp 的swfupload上传例子"提供了在ASP环境中集成SWFUpload组件的实例,涵盖了前端Flash组件的使用、后端ASP处理逻辑、文件上传的交互设计以及安全性等多个方面,是学习和研究ASP文件上传功能的宝贵资料。...
**SwfUpload 知识点详解** SwfUpload 是一个流行的JavaScript库,它允许在网页上实现复杂的文件上传功能,特别适用于需要批量上传或者大文件上传的场景。它通过在后台运行的Flash组件来实现这一功能,使得用户可以...
这个"PHP多文件上传 SWFUpload上传例子"是一个演示如何将SWFUpload与PHP结合使用的示例项目。 首先,我们需要了解SWFUpload的工作原理。它使用了Flash技术,因为Flash支持在客户端选择多个文件进行上传,而HTML原生...
其次,`SWFUpload使用例子.zip`提供了使用SWFUpload的实际示例,这对于初学者来说是非常有价值的。通过这些实例,你可以快速掌握如何在项目中集成SWFUpload,例如配置初始化参数、监听各种事件(如文件选择、上传...
SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。 * 可以同时上传多个文件; * 类似AJAX的无...
这个"三、struts2+swfUpload简单例子"很可能是关于如何集成这两个技术来创建一个高效的文件上传功能的教程。 在集成Struts2和SwfUpload的过程中,有几个关键知识点是必不可少的: 1. **Struts2框架**:Struts2提供...
利用swfupload结合struts2实现的一个上传mp3和mp4文件,并可以在页面上用html5进行播放,本例只是自己动手写的一个小例子。注意:为了节省资源,例子中并未包含struts2的jar,需要手动添加struts2用到的jar包
通过这个小例子,我们可以学习到如何在Java Web应用中使用SWFUpload组件,实现多文件上传功能,从而提高用户交互性和网站性能。理解并掌握这些知识点对于任何涉及文件上传的Web开发项目都是至关重要的。