文件上传插件SWFUpload的使用指南

SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大。以前在项目中用过几次,但它的配置参数太多了,用过后就忘记怎么用了,到以后要用时又得到官网上看它的文档,真是太烦了。所以索性就把它的用法记录下来,也方便英语拙计的同学查看,利人利己,一劳永逸。(ps:SWFUpload早就不再更新了,官网也打不开了,推荐大家使用Plupload来代替SWFUpload,Plupload以html5上传方式为主,在不支持html5的浏览器中会自动回退到flash的上传方式,功能灰常强大!使用方法可以看我写的《前端上传组件Plupload使用指南》)

SWFUpload的特点:

1、用flash进行上传,页面无刷新,且可自定义Flash按钮的样式;

2、可以在浏览器端就对要上传的文件进行限制;

3、允许一次上传多个文件,但会有一个上传队列,队列里文件的上传是逐个进行的,服务器端接收文件时跟普通的表单上传文件是一样的;

4、提供了丰富的事件接口供开发者使用;

SWFUpload的文件上传流程是这样的:

1、引入相应的js文件

2、实例化SWFUpload对象,传入一个配置参数对象进行各方面的配置。

3、点击SWFUpload提供的Flash按钮,弹出文件选取窗口选择要上传的文件;

4、文件选取完成后符合规定的文件会被添加到上传的队列里;

5、调用startUpload方法让队列里文件开始上传;

6、文件上传过程中会触发相应的事件,开发者利用这些事件来更新ui、处理错误、发出提示等等;

SWFUpload包括三部分的内容:SWFUpload.js、swfupload.swf、初始化配置参数及各种事件处理函数。所以首先在页面引入SWFUpload.js

然后实例化一个SWFUpload对象:

Click ",button_text_style : ".redText { color: #FF0000; }",button_text_left_padding : 3,button_text_top_padding : 2,button_action : SWFUpload.BUTTON_ACTION.SELECT_FILES,button_disabled : false,button_cursor : SWFUpload.CURSOR.HAND,button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,swfupload_loaded_handler : swfupload_loaded_function,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,}; swfu = new SWFUpload(settings_object);//实例化一个SWFUpload,传入参数配置对象 }; /*定义各种事件监听函数*/ function swfupload_loaded_function(){} function file_dialog_start_function(){} ...等等

我们看到要实现一个swfupload上传功能很简单,就是实例化一个swfupload对象。但繁琐的地方就在于实例化实要用到的参数配置对象,以及各种事件的发生时机以和提供的参数。所以重点来了。下面几个表格对开发中要用到的东西列举了出来,虽然已经蛮多了,但并不是swfupload的全部,我列出来的只是常用的。要查看完整的文档,请到swfupload官网上查询。

一、配置参数对象中的常用属性及说明

upload_urlpreserve_relative_urls file_post_name post_params use_query_string file_types file_types_description file_size_limit file_upload_limit file_queue_limit flash_url prevent_swf_caching button_placeholder_id button_placeholder button_image_url button_width button_height button_text button_text_style button_text_top_padding button_text_left_padding button_disabled button_cursor button_window_mode file_dialog_start_handler file_queued_handler file_queue_error_handler file_dialog_complete_handler upload_start_handler upload_progress_handler upload_error_handler upload_success_handler upload_complete_handler

二、各种事件说明

要实现与用户的交互,靠的就是在这些事件上做文章了

描述
fileDialogStart ( ) fileQueued (

file object

)fileQueueError (

file object,error code,message

)fileDialogComplete (

number of files selected,number of files queued,total number of files in the queued

)uploadStart (

file object

)uploadProgress (

file object,bytes complete,total bytes

)uploadError (

file object,message

)uploadSuccess (

file object,server data,received response

)uploadComplete(

file object

)

三、swfupload实例的方法

方法中大多数是动态改变参数配置对象的方法

destroy ( ) startUpload(

file_id

)cancelUpload (

file_id,trigger_error_event

)stopUpload ( )getStats ( )setStats (

stats_object

)getFile (

file_id|index

)addPostParam (

name,value

)removePostParam (

name

)addFileParam (

file_id,name,value

)removeFileParam (

file_id,name

)setUploadURL (

url

)setPostParams (

param_object

)setFileTypes (

types,description

)setFileSizeLimit (

file_size_limit

)setFileUploadLimit (

file_upload_limit

)setFileQueueLimit (

file_queue_limit

)setFilePostName (

file_post_name

)setUseQueryString (

use_query_string

)setButtonImageURL (

url

)setButtonDimensions (

width,height

)setButtonText (

text

)setButtonTextStyle (

css_style_text

)setButtonTextPadding (

left,top

)setButtonDisabled (

isDisabled

)setButtonCursor (

buttonCursor

)

四、文件信息对象 File Object

在事件监听函数中,经常要用到文件信息对象来获取文件的信息以供下一步的操作

index name type creationdate modificationdate filestatus

五、队列状态对象 Stats Object

用来获取当前队列的状况

id
files_queued successful_uploads upload_errors upload_cancelled queue_errors

六、一些常量

定义的一些常量,便于理解

in_progress
SWFUpload.movieCount SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE SWFUpload.QUEUE_ERROR.INVALID_FILETYPE SWFUpload.UPLOAD_ERROR.HTTP_ERROR SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL SWFUpload.UPLOAD_ERROR.IO_ERROR SWFUpload.UPLOAD_ERROR.SECURITY_ERROR SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED SWFUpload.UPLOAD_ERROR.FILE_CANCELLED SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED SWFUpload.FILE_STATUS.QUEUED SWFUpload.FILE_STATUS.IN_PROGRESS SWFUpload.FILE_STATUS.ERROR SWFUpload.FILE_STATUS.COMPLETE SWFUpload.FILE_STATUS. SWFUpload.CURSOR.ARROW SWFUpload.CURSOR.HAND SWFUpload.WINDOW_MODE.WINDOW SWFUpload.WINDOW_MODE.OPAQUE SWFUpload.WINDOW_MODE.TRANSPARENT

内容太多了,感觉有点乱了,如果还不清楚怎么使用,建议看下官网的使用流程,明白怎么使用后再来看这些属性、事件、方法、常量什么的吧。

以上就是本文的全部内容,希望对大家有所帮助,同时也希望多多支持编程之家!

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...
SWFUpload.instances