引用:http://baike.baidu.com/view/1332553.htm

下载地址:http://code.google.com/p/swfupload/

什么是SWFUpload?

  SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合FlashJavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统<input type="file" />标签的文件上传模式。

 

编辑本段SWFUpload的主要特点

  * 可以同时上传多个文件;

 

  * 类似AJAX的无刷新上传;

 

  * 可以显示上传进度;

 

  * 良好的浏览器兼容性;

 

  * 兼容其他JavaScript库 (例如:jQueryPrototype等);

 

  * 支持Flash 8和Flash 9;

 

  SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTMLCSS和JavaScript来随心所欲的定制它在浏览器下的外观;它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程中更新页面内容来营造各种动态效果。

 

  在使用SWFUpload之前,请确认你具备一定的JavaScript和DOM知识。在实际开发中,大部分的错误都是由于错误的设置和低劣的Event Handlers处理程序所造成的。

 

编辑本段效果演示

  * Classic Form Demo http://demo.swfupload.org/v220/formsdemo/index.php ;

 

  * Features Demo http://demo.swfupload.org/v220/featuresdemo/index.php ;

 

  * Application Demo http://demo.swfupload.org/v220/applicationdemo/index.php ;

 

  * SWFObject Plugin Demo http://demo.swfupload.org/v220/swfobjectdemo/index.php ;

 

编辑本段选择合适的Flash控件

  在发行包(SWFUpload v2)中含有2个版本的Flash控件(swfupload_f8.swf 与swfupload_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_sizeupload_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);

 

  这样即可解决。

swfupdate flash上传工具的更多相关文章

  1. 文件上传工具swfupload[转]

    转至:http://zhangqgc.iteye.com/blog/906419 文件上传工具swfupload 示例: 1.JavaScript设置SWFUpload部分(与官方例子类似): var ...

  2. Flash上传组件之SWFUpload文件上传

    一.什么是SWFUpload? SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而 ...

  3. PHP 图片上传工具类(支持多文件上传)

    ====================ImageUploadTool======================== <?php class ImageUploadTool { private ...

  4. FlashFXP(强大的FXP/ftp上传工具)V5.0.0.3722简体中文特别版

    flashfxp是功能强大的fxp/ftp软件,融合了一些其他优秀ftp软件的优点,如像cuteftp一样可以比较文件夹, FlashFXP是一款功能强大的FXP/ftp上传工具, FlashFXP集 ...

  5. 使用swfupload上传超过30M文件,使用FLASH上传组件

    原文:使用swfupload上传超过30M文件,使用FLASH上传组件 前一段时间会员的上传组件改用FLASH的swfupload来上传,既能很友好的显示上传进度,又能完全满足大文件的上传. 后来服务 ...

  6. 文件上传工具类 UploadUtil.java

    package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

  7. Flash上传文件(结合asp.net)

    一.实现原理.在某些场合,我们需要使用Flash进行“文件上传”,原因是Flash 能制作出表现力丰富的UI界面. (自负又孤陋寡闻的我在这里做一个补充:Flash使用flash.net包中的File ...

  8. 小白日记20:kali渗透测试之后渗透测试阶段(一)--上传工具

    后渗透测试阶段--上传工具 为防止管理员将漏洞补上后,我们无法再通过该漏洞控制对方主机,所以需要进行后渗透测试阶段 1.上传各种工具 2.提权:为了全面控制目标系统 3.擦除攻击痕迹:防止管理员通过日 ...

  9. flash上传头像,截取图像 组件演示

    效果图如下: HTML页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// ...

随机推荐

  1. 《深入浅出WPF》重点摘要(—)Binding自动通知机制

    最近因为公司的项目需要用WPF开发,就学习了一下WPF.刚开始只是用到什么就百度什么,虽然功能是实现了,但还是没有弄清楚原理(如果不弄清原理,会感觉很心虚,整个人会没底气),所以决定找个教程系统地学一 ...

  2. Python的循环

    循环是一个结构,导致一个程序要重复一定的次数 条件循环也一样,当条件变为假,循环结束 For循环 在python for循环遍历序列,如一个列表或一个字符. for循环语法:   ——for iter ...

  3. [Environment Build] 如何实现Visual Studio中的区域语言环境切换

    最开始学习C#这门语言的时候,英文能力不够好,安装的中文版本的Visual Studio,现在工作有段时间了,公司又是个外企,慢慢不习惯中文版本的了,于是产生了想切换语言的想法,网上搜索了下,下载了个 ...

  4. docker 感性介绍

    Docker 允许开发者们将他们的应用打包放在云端的“容器”中,无需再修改就可以发布到任何流行的 Linux 机器上.由于采用沙盒机制,各应用之间没有任何接口,所以不用担心它们会相互干扰.也同样因为这 ...

  5. Struts之ForwardAction

    在Struts中,通过action跳转jsp,但是有时希望仅仅只是跳转页面,而不需要action,这时可以用ForwardAction. 定义一个仅仅是跳转的ForwardAction如下: < ...

  6. mutable和volatile关键字

    1.mutable 在C++中,mutable是为了突破const的限制而设置的.被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其 ...

  7. c++线程传参问题

    std::thread可以和任何可调用类型一起工作,可调用对象和函数带有参数时,可以简单地将参数传递给std::thread的构造函数 例如: #include<iostream> #in ...

  8. cocos2d-x入门笔记(1)

    cocos2d-x的大致开发流程是,首先使用win32版进行代码编写并完成游戏,然后将代码迁移到对应的开发环境上进行交叉编译完成游戏打包,如iphone上是mac+xcode,android是ecli ...

  9. android 中使用回调方法(适用于自定义view传值到activity、adapter传值到activity)

    如图所示: 每当listview中有选中的操作时都需要发消息给activity,用来实时改变真实需要支付的剩余金额. 代码暂不公开啦!公司项目!

  10. knockoutjs select onchange 下拉级联

    1.绑定数据源 <select name="" class="xlb02" data-bind="options: $root.dataSour ...