文件上传利器SWFUpload使用指南
属性类型默认值描述upload_urlString?处理上传文件的服务器端页面的url地址,可以是绝对地址,也可以是相对地址,当为相对地址时相对的是当前代码所在的文档地址preserve_relative_urlsBooleanfalse如果为false则SWFUpload会把swfupload.swf用到的相对地址转换为绝对地址,以达到更好的兼容性file_post_nameStringFiledata相当于用普通的文件域上传文件时的name属性,服务器端接收页面通过该名称来获取上传的文件post_paramsObject(直接量)?一个对象直接量,里面的键/值对会随着每一个文件一起上传,文件上传要附加一些信息时很有用use_query_stringBooleanfalse为false时,post_params属性定义的参数会以post方式上传;为true时,则会以get方式上传(即参数会以查询字符串的形式附加到url后面)file_typesString?该属性指定了允许上传的文件类型,当有多个类型时使用分号隔开,比如:*.jpg;*.png ,允许所有类型时请使用 *.*file_types_descriptionString?指定在文件选取窗口中显示的文件类型描述,起一个提示和说明的作用吧file_size_limitString?指定要上传的文件的最大体积,可以带单位,合法的单位有:B、KB、MB、GB,如果省略了单位,则默认为KB。该属性为0时,表示不限制文件的大小。file_upload_limitNumber?指定最多能上传多少个文件,当上传成功的文件数量达到了这个最大值后,就不能再上传文件了,也不能往上传队列里添加文件了。把该属性设为0时表示不限制文件的上传数量。file_queue_limitNumber?指定文件上传队列里最多能同时存放多少个文件。当超过了这个数目后只有当队列里有文件上传成功、上传出错或被取消上传后,等同数量的其他文件才可以被添加进来。当file_upload_limit的数值或者剩余的能上传的文件数量小于file_queue_limit时,则取那个更小的值flash_urlString?swfupload.swf文件的绝对或相对地址,相对地址是指相对于当前的页面地址。实例化swfupload后,就不能再改变该属性的值了。prevent_swf_cachingBoolean?为true时会加一个随机数在swfupload.swf地址的后面,以阻止flash影片被缓存,这是为了防止某些版本的IE浏览器在读取缓存的falsh影片时出现的bugbutton_placeholder_idString?指定一个dom元素的id,该dom元素在swfupload实例化后会被Flash按钮代替,这个dom元素相当于一个占位符button_placeholderDOMElement?指定一个dom元素,该dom元素在swfupload实例化后会被Flash按钮代替,这个dom元素相当于一个占位符。当button_placeholder_id与button_placeholder都存在时,以button_placeholder_id为优先button_image_urlString?指定Flash按钮的背景图片,相对地址或绝对地址都可以。该地址会受到preserve_relative_urls属性的影响,遵从与upload_url一样的规则。
该背景图片必须是一个sprite图片,从上到下包含了Flash按钮的正常、鼠标悬停、按下、禁用这四种状态。因此该图片的高度应该是Flash按钮高度的四倍button_widthNumber?指定Flash按钮的宽度button_heightNumber?指定Flash按钮的高度,应该为button_image_url所指定的按钮背景图片高度的1/4button_textString?指定Flash按钮上的文字,也可以是html代码button_text_styleString?Flash按钮上的文字的样式,使用方法见示例button_text_top_paddingNumber?指定Flash按钮顶部的内边距,可使用负值button_text_left_paddingNumber?指定Flash按钮左边的内边距,可使用负值button_disabledBooleanfalse为true时Flash按钮将变为禁用状态,点击也不会触发任何行为button_cursor??指定鼠标悬停在Flash按钮上时的光标样式,可用值为SWFUpload.CURSOR里定义的常量button_window_mode??指定Flash按钮的WMODE属性,可用值为SWFUpload.WINDOW_MODE里定义的常量file_dialog_start_handlerFunction?fileDialogStart事件侦听函数file_queued_handlerFunction?fileQueued事件侦听函数file_queue_error_handlerFunction?fileQueueError事件侦听函数file_dialog_complete_handlerFunction?fileDialogComplete事件侦听函数upload_start_handlerFunction?uploadStart事件侦听函数upload_progress_handlerFunction?uploadProgress事件侦听函数upload_error_handlerFunction?uploadError事件侦听函数upload_success_handlerFunction?uploadSuccess事件侦听函数upload_complete_handlerFunction?uploadComplete事件侦听函数
二、各种事件说明
要实现与用户的交互,靠的就是在这些事件上做文章了
fileDialogStart ( )在文件选取窗口将要弹出时触发fileQueued ( file object )当一个文件被添加到上传队列时会触发此事件,提供的唯一参数为包含该文件信息的file object对象fileQueueError ( file object, error code, message )当文件添加到上传队列失败时触发此事件,失败的原因可能是文件大小超过了你允许的数值、文件是空的或者文件队列已经满员了等。三、swfupload实例的方法
方法中大多数是动态改变参数配置对象的方法
destroy ( )当不需要再使用SWFUpload了的时候,可以使用该方法来销毁它的实例和dom元素startUpload( file_id )开始上传队列中指定的文件四、文件信息对象 File Object
在事件监听函数中,经常要用到文件信息对象来获取文件的信息以供下一步的操作
属性类型描述idStringSWFUpload定义的文件id,用来控制文件的上传indexNumber文件的索引,用在getFile(i)方法中nameString文件的原始名称,不包括路径typeString文件类型creationdateDate文件的创建日期modificationdateDate文件的最后修改日期filestatusNumber当前文件的状态,详细的请参照SWFUpload.FILE_STATUS中定义的常量五、队列状态对象 Stats Object
用来获取当前队列的状况
属性类型描述in_progressNumber得到的值为1或0,表明当前队列是否有文件正在上传中files_queuedNumber目前上传队列中的文件数量successful_uploadsNumber已成功上传(指触发了uploadSuccess事件)的文件数量upload_errorsNumber上传失败的文件数量(包括被取消上传的文件)upload_cancelledNumber被取消上传的文件数量queue_errorsNumber触发了fileQueueError事件的文件数量六、一些常量
定义的一些常量,便于理解
常量名描述SWFUpload.instances该常量是一个对象,代表一个页面上所有的SWFUpload实例的引用的集合,用SWFUpload实例的movieName属性进行索引SWFUpload.movieCount页面上存在的SWFUpload实例的数量??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服务器返回的状态码不是200SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL没有设置 upload_urlSWFUpload.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给startUpload()方法传入的文件id不存在SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILEDuploadStart()方法中返回了falseSWFUpload.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.WINDOWFlash按钮会显示在页面的所有dom元素上面SWFUpload.WINDOW_MODE.OPAQUE允许其他dom元素覆盖住Flash按钮SWFUpload.WINDOW_MODE.TRANSPARENT允许Flash按钮透明显示内容太多了,感觉有点乱了,如果还不清楚怎么使用,建议看下官网的使用流程,明白怎么使用后再来看这些属性、事件、方法、常量什么的吧。