yeminping 发表于 2013-1-29 07:31:48

利用SWFUpload实现大附件上传

长久以来,在客户端上传大文件,总是受到客户端环境限制,导致大文件处理上总是不够理想。能处理比较好的上传大附件控件,基本上都需要付费或者是不开源控件,使得我们难以扩展,不方便按照自已需要应用到项目中。当SWFUpload 出现,改变了我们之前遇到的困境。
SWFUpload 简介
SWFUpload 结合了FLASH和JavaScript的功能,以提供一种超越了传统的浏览器中<input type="file" />标签提供的文件上传功能。SWFUpload提供的主要功能:
    在文件选择对话框中能够进行文件多选
    页面无刷新的上传
    提供上传进度的事件回调,实时显示上传进度
    在文件上传的同时能够发送额外的POST数据
    支持单文件、多文件的文件的选择
    文件入队数量,文件上传数量和文件大小的限制
    对FLASH 9和FLASH 10播放器的支持(V2.2.0版本放弃了对Flash 8的支持)
SWFUpload背后的设计思想和其它基于Flash的上传工具是不同的。它将浏览器的中UI交给开发人员来控制。开发人员能够利用XHTML,CSS,Javascript来定制符合他们网站风格的UI上传元素。然后使用它提供的一组简单的JS事件来更新上传状态,开发人员能够利用这些事件来及时更新页面中的上传进度UI。SWFUpload提供API供开发者通过图片、文字、CSS的方式来自定制更灵活的UI显示。
总之, SWFUpload提供更加灵活的自定义,开发人员可控制;SWFUpload借助了FLASH第三方资源上传,成功解决上传大附件过程,占用大量客户端资源,直至当前线程终止问题。
SWFUpload并不是拖放式的上传控件,它需要JavaScript和DOM的知识。
SWFUpload由4部分组成:
    初始化和设置(Javascript)
    JavaScript 库:SWFUpload.js
    SWFUpload.swf(V2.2.0版本放弃了对flash 8的支持)
    事件处理(Javascript)
SWFpload必须在页面中初始化,一般可以在window.onload事件中完成此操作。它的构造函数需要一个Object类型的设置对象。这个设置对象一般是一个直接定义的Object类型变量,直接传递给SWFUpload的构造函数。初始化和设置具体实例如下:
var swfu;
window.onload = function () {
    swfu = new SWFUpload({
      upload_url : "http://www.bb.com/upload.aspx ",
      flash_url : "http:// www.bb.com /swfupload.swf",
      button_placeholder_id : "spanSWFUploadButton",
      file_size_limit : "20480"
    });};
开发人员还要必须定义一系列JavaScript函数来处理SWFUpload事件回调,当一些不同的重要事件发生的时候,这些函数会被触发。通过处理SWFUpload的事件,开发人员能够提供关于上传进度、出错信息以及上传完成等的信息反馈。SWFUpload更加详细初始化事件或属性,可以访问官方:http://www.swfupload.org/

资源:
官方:http://www.swfupload.org/
SWFUpload V2.2.0文档:http://www.v-sky.com/doc/swfupload/Documentation.html
或 http://baike.baidu.com/view/1332553.htm
页: [1]
查看完整版本: 利用SWFUpload实现大附件上传