0
点赞
收藏
分享

微信扫一扫

swfupload--php上传说明


什么是SWFUpload?  SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。 [编辑本段]SWFUpload的主要特点  * 可以同时上传多个文件;  * 类似AJAX的无刷新上传;  * 可以显示上传进度;  * 良好的浏览器兼容性;  * 兼容其他JavaScript库 (例如:jQuery, Prototype等);  * 支持Flash 8和Flash 9;  SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTML、CSS和JavaScript来随心所欲的定制它在浏览器下的外观;它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程中更新页面内容来营造各种动态效果。  在使用SWFUpload之前,请确认你具备一定的JavaScript和DOM知识。在实际开发中,大部分的错误都是由于错误的设置和低劣的Event Handlers处理程序所造成的。 [编辑本段]文档中文翻译  http://www.v-sky.com/doc/swfupload/v2.1.0/Documentation.html [编辑本段]效果演示  * 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 ,如   例如: 根据需要的设置来初始化SWFUpload,同时把它的seleteFiles方法绑定到一个按钮的Click事件上。 var swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload_f9.swf" }); document.getElementById("BrowseButton").onclick = function () { swfu.selectFiles(); }; Flash 控制元素 SWFUpload JavaScript库动态加载Flash控制元素(swfupload_f8.swf/swfupload_f9.swf)。该Flash控制元素有两个版本。swfupload_f8.swf支持Flash Player8以及更高版本。它在提供了更好的兼容性同时牺牲了一些功能。swfupload_f9.swf支持Flash Player9.0.28以及更高版本。它在提供了额外的功能同时牺牲了使用Flash Player8的用户。 Flash控制元素的文件地址在初始化的时候就应该在SWFUpload设置对象中定义。 Flash控制元素是一个不可见的的Flash影片,它提供了文件浏览、检验和上传功能。它不提供任何用户界面组件,但它会在需要时候通过与Javascript通信来通知浏览器处理更新。 事件处理开发人员必须定义一系列JavaScript函数来处理SWFUpload事件回调,当一些不同的重要事件发生的时候,这些函数会被触发。 通过处理SWFUpload的事件,开发人员能够提供关于上传进度、出错信息以及上传完成等的信息反馈。 例如: swfupload的处理事件和初始化 // uploadStart处理事件。该函数变量在设置对象中指定给了upload_start_handler属性。 var uploadStartEventHandler = function (file) { var continue_with_upload = true; return continue_with_upload; }; //uploadSuccess处理事件。 该函数变量在设置对象中指定给了upload_success_handler属性。 var uploadSuccessEventHandler = function (file, server_data) { alert("The file " + file.name + " has been delivered to the server."); alert("The server responded with " + server_data); }; //创建SWFUpload实例,设置事件回调函数 var swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload_f9.swf", file_size_limit : "20480", upload_start_handler : uploadStartEventHandler, upload_success_handler : uploadSuccessEventHandler }); SWFUpload JavaScript 对象构造函数 SWFUpload(settings object) 返回:一个SWFUpload 实例 var swfupload_instance = new SWFUpload(settings_object); 全局变量和常量 SWFUpload定义了一些全局变量和常量,这对SWFUpload的高级应用程序和处理错误都是很有用的,它们都是只读的。 SWFUpload.instances SWFUpload.instances是一个存储了页面中所有SWFUpload实例引用的数组。Flash播放器依靠这个数组来调用正确的处理事件。该数组是由movieName属性来索引的关联数组。例如:SWFUpload.instances.SWFUpload_0访问的是第一个实例引用。 注意: SWFUpload.instances不是一个真正的JavaScript数组,实际上它是一个对象(关联数组)。 SWFUpload.movieCount SWFUpoad.movieCount是一个全局变量,用于记录页面中的SWFUpload实例个数,同时确保给每一个Flash影片分配一个惟一的movieName。 SWFUpload.QUEUE_ERROR SWFUpload.QUEUE_ERROR是一个包含了Queue Error错误码的JS对象,一般用它来查看fileQueueError事件的中发送的错误码,以确定fileQueueError的具体类型。 SWFUpload.QUEUE_ERROR = { QUEUE_LIMIT_EXCEEDED : -100, FILE_EXCEEDS_SIZE_LIMIT : -110, ZERO_BYTE_FILE : -120, INVALID_FILETYPE : -130 }; SWFUpload.UPLOAD_ERROR SWFUpload.UPLOAD_ERROR是一个包含了Upload Error错误码的JS对象,一般用它来查看uploadError事件的中发送的错误码,以确定uploadError的具体类型。 SWFUpload.UPLOAD_ERROR = { HTTP_ERROR : -200, MISSING_UPLOAD_URL : -210, IO_ERROR : -220, SECURITY_ERROR : -230, UPLOAD_LIMIT_EXCEEDED : -240, UPLOAD_FAILED : -250, SPECIFIED_FILE_ID_NOT_FOUND : -260, FILE_VALIDATION_FAILED : -270, FILE_CANCELLED : -280, UPLOAD_STOPPED : -290 }; SWFUpload.FILE_STATUS SWFUpload.FILE_STATUS是一个包含File Status状态码的JS对象。它可以用来检测File对象中的file status属性,以确定文件的状态。 SWFUpload.FILE_STATUS = { QUEUED : -1, IN_PROGRESS : -2, ERROR : -3, SUCCESS : -4, CANCELLED : -5 }; 默认处理事件 SWFUpload库提供了一系列默认的处理事件。当开发人员没有自定义处理事件时,SWFUpload库将调用这些默认的处理事件。因此当自定义事件时,不要把这些默认的处理事件覆盖了。自定义事件是需要在settings对象中被单独定义的。 属性下面这个列表是相关属性的具体描述。使用其它属性或者对只读属性进行了写的操作都会造成SWFUpload出现问题。 customSettings (可读/可写) customSettings属性是一个空的JavaScript对象,它被用来存储跟SWFUpload实例相关联的数据。它的内容可以使用设置对象中的custom_settings属性来初始化。 注意:一些插件使用customSettings对象来实现它们的内部控制。当重写整个customSettings对象的时候需要务必小心。 例如: // 初始化包含自定义设置的SWFUpload对象 var swfu = new SWFUpload({ custom_settings : { custom_setting_1 : "custom_setting_value_1", custom_setting_2 : "custom_setting_value_2", custom_setting_n : "custom_setting_value_n", } }); swfu.customSettings.custom_setting_1 = "custom_setting_value_1"; // 更改一个存在的自定义设置 swfu.customSettings.myNewCustomSetting = "new custom setting value"; // 添加一个新的自定义设置 //用一个全新的对象重写customSettings swfu.customSettings = { custom_setting_A : "custom_setting_value_A", custom_setting_B : "custom_setting_value_B" }; movieName(只读)包含了该SWFUpload实例的惟一影片名字。该值被传递给Flash,用来完成Flash和JavaScript的通信。该值被用来索引实例在SWFUpload.instances数组中的位置。 方法下面的方法用来操作SWFUpload。其中有些方法可以跟元素(例如,按钮)的点击事件绑定,其它的方法供SWFUpload内部处理事件中调用。 object addSetting(setting_name, value, default_value) 不赞成使用 V2.1.0源码中注释:addSetting和getSetting已经不再被使用了,只是考虑到兼容V2版本,才继续保留在库中。 object getSetting(setting_name) 不赞成使用 V2.1.0源码中注释:addSetting和getSetting已经不再被使用了,只是考虑到兼容V2版本,才继续保留在库中。 object retrieveSetting(setting_value, default_value) v2.1.0中已被删除 bool destroy() v2.1.0中新增 用于将一个SWFUpload实例从页面中销毁。不但删除DOM中的Flash元素,同时还删除SWFUpload实例的相关引用。成功返回true,失败返回false。 这个方法还没有针对插件做兼容测试,可能会有不兼容问题。(尤其是SWFObject插件) 提醒SWFUpload在v2.1.0中改写了Flash插入的代码,V2版中使用SWFObject插入Flash会造成IE的一个刷新BUG。 void displayDebugInfo() 调用debug方法,在Debug输出框中显示SWFUpload实例的设置信息,如果设置中的debug属性是true,那么默认是在实例化完成以后自动调用此方法。 void selectFile() 弹出flash的文件选择对话框,只能选择单个文件。 void selectFiles() 弹出flash的文件选择对话框,可一次性选择多个文件。 void startUpload(file_id) 指定file_id来启动该文件的上传,如果file_id被忽略了,那么默认开始上传第一个文件。 void cancelUpload(file_id) 指定file_id来退出文件的上传,从上传队列中删除该文件。 如果忽略file_id,那么默认文件上传队列中的第一个文件将被退出上传。 如果取消的文件是正在上传,那么会触发uploadError事件。 void stopUpload() 如果当前有文件上传,那么停止上传,并且将文件还原到上传队列中。 停止了正在上传的文件,uploadError事件会被触发。如果此时没有正在上传文件,那么不会发生任何操作,不会触发任何事件。 object getStats() 获取当前状态的统计对象,具体见Stats Object。 void setStats(stats_object) Stats统计对象是可以被修改的。如果你希望在上传完毕之后修改上传成功或者上传失败的统计数目时,那么可以使用该方法。 提醒:可供修改的属性只有successful_uploads ,upload_errors,upload_cancelled,queue_errors,并且值必须是Number类型。 object getFile(file_id|index) 根据file_id或者index来获取文件队列中的文件对象。file_id是文件对象中的id属性,index是文件对象中的index属性。 传递Number类型的参数会被认定为index,那么返回的是文件队列(所有尝试入队文件,包括因没有通过文件大小、类型检测等而触发fileQueueError,没有成功加入文件上传队列的文件对象)数组中下标为index的文件对象。如果index不在队列数组范围内,那么返回null。 传递非Number类型的参数会被认定为file_id,那么返回的是文件上传队列(通过文件检测,准备好进行上传的文件)数组中id为file_id的文件对象。如果参数为空,或者没有此id的文件对象,那么返回文件等待队列中的第一个文件对象,如果第一个文件对象为空,那么返回null。 void addPostParam(name, value) 给设置中的post_params对象添加值对,当文件上传的时候,这个值对会一同在POST中发送。 如果设置的时候,post_params中以及存在该值,那么实际上会被覆盖。 void removePostParam(name) 从设置中的post_params对象中删除name指定的属性,当文件上传的时候,删除的值对不会继续在POST中发送。 bool addFileParam(file_id, name, value) 为指定file_id的特定文件对象添加POST值对,如果添加的name属性已经存在,那么原值会被覆盖。 如果需要给所有文件对象添加POST值,那么可以使用设置中的post_params属性。 bool removeFileParam(file_id, name) 删除由addFileParam添加的POST值对. 如果POST设置中没有此属性,那么返回false。 void setUploadURL(url) 动态修改设置中的upload_url属性。 void setPostParams(param_object) 动态修改post_params,以前的属性全部被覆盖。param_object必须是一个JavaScript的基本对象,所有属性和值都必须是字符串类型。 void setFileTypes(types, description) 动态修改设置中的file_types 和 file_types_description,两个参数都是必须的。 void setFileSizeLimit(file_size_limit) 动态修改设置中的file_size_limit,此修改针对之后的文件大小过滤有效。file_size_limit参数接收一个单位,有效的单位有B、KB、MB、GB,默认单位是KB。 例如: 2147483648 B, 2097152, 2097152KB, 2048 MB, 2 GB void setFileUploadLimit(file_upload_limit) 动态修改设置中的file_upload_limit,特殊值0表示无限制。 提醒:这里限制的是一个SWFUpload实例控制上传成功的文件总数。 void setFileQueueLimit(file_queue_limit) 动态修改设置中的file_queue_limit,特殊值0表示无限制。 提醒:这里限制的是文件上传队列中(入队检测通过的文件会添加到上传队列等待上传)允许排队的文件总数。 void setFilePostName(file_post_name) 动态修改设置中的file_post_name,注意在Linux环境下,FlashPlayer是忽略此设置的。 void setUseQueryString(use_query_string) 动态修改设置中的use_query_string,设置为true的时候,SWFUpload以GET形式发送数据,如果为false,那么就以POST发送数据。 void setDebugEnabled(debug_enabled) 启动/禁止 debug输出,debug_enabled参数是一个布尔值。 事件 SWFUpload在操作过程中会触发一系列事件,开发者可以利用这些回调的处理事件来控制UI,控制操作或者报告错误。 所有的事件都是在SWFUpload实例的上下文中调用的,因此在这些回调的事件中使用this能够直接访问到该触发该事件的实例对象。 flashReady() 该事件函数是内部事件,因此不能被重写。当SWFupload实例化,加载的FLASH完成所有初始化操作时触发此事件。 提醒:对应设置中的自定义事件swfupload_loaded_handler swfUploadLoaded() V2.1.0版本中已经删除了此事件 fileDialogStart() 此事件在selectFile或者selectFiles调用后,文件选择对话框显示之前触发。只能同时存在一个文件对话框。 提醒:对应设置中的自定义事件file_dialog_start_handler fileQueued(file object) 当文件选择对话框关闭消失时,如果选择的文件成功加入上传队列,那么针对每个成功加入的文件都会触发一次该事件(N个文件成功加入队列,就触发N次此事件)。 提醒:对应设置中的自定义事件file_queued_handler fileQueueError(file object, error code, message) 当选择文件对话框关闭消失时,如果选择的文件加入到上传队列中失败,那么针对每个出错的文件都会触发一次该事件(此事件和fileQueued事件是二选一触发,文件添加到队列只有两种可能,成功和失败)。 文件添加队列出错的原因可能有:超过了上传大小限制,文件为零字节,超过文件队列数量限制,设置之外的无效文件类型。 具体的出错原因可由error code参数来获取,error code的类型可以查看SWFUpload.QUEUE_ERROR中的定义。 提醒:对应设置中的自定义事件file_queue_error_handler 注意:如果选择入队的文件数量超出了设置中的数量限制,那么所有文件都不入队,此事件只触发一次。如果没有超出数目限制,那么会对每个文件进行文件类型和大小的检测,对于不通过的文件触发此事件,通过的文件成功入队。 fileDialogComplete(number of files selected, number of files queued) 当选择文件对话框关闭,并且所有选择文件已经处理完成(加入上传队列成功或者失败)时,此事件被触发,number of files selected是选择的文件数目,number of files queued是此次选择的文件中成功加入队列的文件数目。 提醒:对应设置中的自定义事件file_dialog_complete_handler 注意:如果你希望文件在选择以后自动上传,那么在这个事件中调用this.startUpload() 是一个不错的选择。如果需要更严格的判断,在调用上传之前,可以对入队文件的个数做一个判断,如果大于0,那么可以开始上传。 uploadStart(file object) 在文件往服务端上传之前触发此事件,可以在这里完成上传前的最后验证以及其他你需要的操作,例如添加、修改、删除post数据等。 在完成最后的操作以后,如果函数返回false,那么这个上传不会被启动,并且触发uploadError事件(code为ERROR_CODE_FILE_VALIDATION_FAILED),如果返回true或者无返回,那么将正式启动上传。 提醒:对应设置中的自定义事件upload_start_handler uploadProgress(file object, bytes complete, total bytes) 该事件由flash定时触发,提供三个参数分别访问上传文件对象、已上传的字节数,总共的字节数。因此可以在这个事件中来定时更新页面中的UI元素,以达到及时显示上传进度的效果。 注意: 在Linux下,Flash Player只在所有文件上传完毕以后才触发一次该事件,官方指出这是Linux Flash Player的一个bug,目前SWFpload库无法解决(我没有测试过)。 提醒:对应设置中的自定义事件upload_progress_handler uploadError(file object, error code, message) 无论什么时候,只要上传被终止或者没有成功完成,那么该事件都将被触发。error code参数表示了当前错误的类型,更具体的错误类型可以参见SWFUpload.UPLOAD_ERROR中的定义。Message参数表示的是错误的描述。File参数表示的是上传失败的文件对象。 例如,我们请求一个服务端的一个不存在的文件处理页面,那么error code会是-200,message会是404。停止、退出、uploadStart返回false、HTTP错误、IO错误、文件上传数目超过限制等,都将触发该事件,Upload error will not fire for files that are cancelled but still waiting in the queue。(对于官方的这句话我还存在疑问,文件退出以后怎么还会保留在文件上传队列中保留呢?) 提醒:对应设置中的自定义事件upload_error_handler 注意:此时文件上传的周期还没有结束,不能在这里开始下一个文件的上传。 uploadSuccess(file object, server data) 当文件上传的处理已经完成(这里的完成只是指向目标处理程序发送了Files信息,只管发,不管是否成功接收),并且服务端返回了200的HTTP状态时,触发此事件。 提醒:对应设置中的自定义事件upload_success_handler 注意: 如果使用的是SWFUpload提供的9.0版本的SWF,那么server data是服务端处理程序返回的数据。 如果使用的是8.0版本,那么server data不可用,一直为undefined。 此时文件上传的周期还没有结束,不能在这里开始下一个文件的上传。 在window平台下,如果使用的是9.0版本,那么服务端的处理程序在处理完文件存储以后,必须返回一个非空值,否则此事件不会被触发,随后的uploadComplete事件也无法执行。 uploadComplete(file object) 当上传队列中的一个文件完成了一个上传周期,无论是成功(uoloadSuccess触发)还是失败(uploadError触发),此事件都会被触发,这也标志着一个文件的上传完成,可以进行下一个文件的上传了。 如果要进行多文件自动上传,那么在这个时候调用this.startUpload()来启动下一个文件的上传是不错的选择。 提醒:对应设置中的自定义事件upload_complete_handler 注意:当在进行多文件上传的时候,中途用cancelUpload取消了正在上传的文件,或者用stopUpload停止了正在上传的文件,那么在uploadComplete中就要很小心的使用this. startUpload(),因为在上述情况下,uploadError和uploadComplete会顺序执行,因此虽然停止了当前文件的上传,但会立即进行下一个文件的上传,你可能会觉得这很奇怪,但事实上程序并没有错。如果你希望终止整个队列的自动上传,那么你需要做额外的程序处理了。 debug(message) 如果debug setting设置为true,那么页面底部会自动添加一个textArea, SWFUpload库和Flash都会调用此事件来在页面底部的输出框中添加debug信息供调试使用。 提醒:对应设置中的自定义事件debug_handler SWFUpload功能对象 Settings object 它是一个Object类型的变量,为SWFUpload的实例初始化提供配置。 其中的每一个配置属性都只能出现一次。 很多属性都是可选的,如果可选属性没有被配置,那么会使用SWFUpload库中默认指定的合适的值,具体可查看setting的详细介绍。 例如:(setting可以配置的所有属性) { upload_url : "http://www.swfupload.org/upload.php", file_post_name : "Filedata", 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" }, use_query_string : false, requeue_on_error : false, file_types : "*.jpg;*.gif", file_types_description: "Web Image Files", file_size_limit : "1024", file_upload_limit : 10, file_queue_limit : 2, flash_url : "http://www.swfupload.org/swfupload_f9.swf", flash_width : "1px", flash_height : "1px", flash_color : "#FFFFFF", debug : false, 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, custom_settings : { custom_setting_1 : "custom_setting_value_1", custom_setting_2 : "custom_setting_value_2", custom_setting_n : "custom_setting_value_n", } } Settings 描述 upload_url 默认值:空字符串 upload_url设置接收的是一个绝对的或者相对于SWF文件的完整URL。推荐使用完整的绝对路径,以避免由浏览器和FlashPlayer修改了基准路径设置而造成的请求路径错误。 注意:这里需要考虑FlashPlayer的安全域模型。 file_post_name 默认值:Filedata (仅在Flash 9版本中可用)该参数设置了POST信息中上传文件的name值(类似传统Form中设置了的name属性)。 注意:在Linux下面此参数设置无效,接收的name总为Filedata,因此为了保证最大的兼容性,建议此参数使用默认值。 post_params 默认值:空的Object对象 post_params定义的是一个包含值对的object类型数据,每个文件上传的时候,其中的值对都会被一同发送到服务端。 注意: 设置值对的时候,值只能是字符串或者数字。 Flash8不支持额外的POST参数,因此post_params会以GET的方式发送。 use_query_string 默认值:false (仅在Flash 9版本中可用) 该属性可选值为true和false,设置post_params是否以GET方式发送。如果为false,那么则以POST形式发送。 requeue_on_error 默认值:false 该属性可选值为true和false。如果设置为true,当文件对象发生uploadError时(除开fileQueue错误和FILE_CANCELLED错误),该文件对象会被重新插入到文件上传队列的前端,而不是被丢弃。如果需要,重新入队的文件可以被再次上传。如果要从上传队列中删除该文件对象,那么必须使用cancelUpload方法。 跟上传失败关联的所有事件同样会被一一触发,因此将上传失败的文件重新入队可能会和Queue Plugin造成冲突(或者是自动上传整个文件队列的自定义代码)。如果代码中调用了startUpload方法自动进行下一个文件的上传,同时也没有采取任何措施让上传失败的文件退出上传队列,那么这个重新入队的上传失败的文件又会开始上传,然后又会失败,重新入队,重新上传...,进入了无止境的循环。 该设置是在v2.1.0中引入的。 file_types 默认值:*.* 设置文件选择对话框的文件类型过滤规则,该属性接收的是以分号分隔的文件类型扩展名,例如“ *.jpg;*.gif”,则只允许用户在文件选择对话框中可见并可选jpg和gif类型的文件。默认接收所有类型的文件。 提醒:该设置只是针对客户端浏览器的过滤,对服务端的文件处理中的文件类型过滤没有任何限制,如果你需要做严格的文件过滤,那么服务端同样需要程序检测。 file_types_description 默认值:All Files 设置文件选择对话框中显示给用户的文件描述。 file_size_limit 默认值:0 设置文件选择对话框的文件大小过滤规则,该属性可接收一个带单位的数值,可用的单位有B,KB,MB,GB。如果忽略了单位,那么默认使用KB。特殊值0表示文件大小无限制。 提醒:该设置只对客户端的浏览器有效,对服务端的文件处理没有任何限制,如果你需要做严格文件过滤,那么服务端同样需要程序处理。 file_upload_limit 默认值:0 设置SWFUpload实例允许上传的最多文件数量,同时也是设置对象中file_queue_limit属性的上限。一旦用户已经上传成功或者添加文件到队列达到上最大数量,那么就不能继续添加文件了。特殊值0表示允许上传的数量无限制。只有上传成功(上传触发了uploadSuccess事件)的文件才会在上传数量限制中记数。使用setStats方法可以修改成功上传的文件数量。 注意:该值不能跨页面使用,当页面刷新以后该值也被重置。严格的文件上传数量限制应该由服务端来检测、管理。 file_queue_limit 默认值:0 设置文件上传队列中等待文件的最大数量限制。当一个文件被成功上传,出错,或者被退出上传时,如果文件队列中文件数量还没有达到上限,那么可以继续添加新的文件入队,以顶替该文件在文件上传队列中的位置。如果允许上传的文件上限(file_upload_limit)或者剩余的允许文件上传数量小于文件队列上限(file_queue_limit),那么该值将采用这个更小的值。 flash_url 默认值:空字符串 设置绝对或者相对于此上传页面的完整URL,一旦SWFupload实例化以后,此设置不能再被修改。 提醒:测试发现使用setUploadURL方法是可以修改此设置的。 flash_width 固定值:1px (v2.1.0已删除) 设置插入flash影片的HTML元素容器的宽度。如果此设置小于1像素,一些浏览器会出现功能异常。 因此该值在v2.1.0中删除了自定义设置,默认设置为1像素了。 flash_height 固定值:1px (v2.1.0已删除) 设置插入flash影片的HTML元素容器的高度。如果此设置小于1像素,一些浏览器会出现功能异常。 因此该值在v2.1.0中删除了自定义设置,默认设置为1像素了。 flash_color 默认值:#FFFFFF 设置HTML页面中的flash背景色,默认为#FFFFFF 提醒:对一个1*1像素的flash元素设置背景颜色,在视觉上的改变基本无效。 debug 默认值:false 该值是布尔类型,设置debug事件是否被触发。 注意:SWFUpload代码中是将此变量和字符串true做的恒等判断,因此它只认定true为DEBUG模式开启,如果设置为1,虽然JS认定是开启模式,并且在初始化完毕后会有生成Debug Console,但后续操作中FLASH不会输出调试信息。(因为我习惯用1和0代表布尔变量,因此一度疑惑为何Flash的debug信息无法输出。) custom_settings 默认值:空的Object对象 该属性接收一个Object类型数据,可用于安全地存储与SWFUpload实例关联的自定义信息,例如属性和方法,而不用担心跟SWFUpload内部的方法和属性冲突以及版本升级的兼容。 设置完毕以后,可以通过实例的customSettings属性来访问。 var swfu = new SWFUpload({ custom_settings : { "My Setting" : "This is my setting", myothersetting : "This is my other setting", integer_setting : 100, a_dom_setting : document.getElementById("some_element_id") } }); var my_setting = swfu.customSettings["My Setting"]); swfu.customSettings["My Setting"] = "This is my new setting"; swfu.customSetting.myothersetting = "another new value"; swfu.customSetting.integer_setting += 25; swfu.customSetting["a_dom_setting"].style.visibility = "hidden"; Event Handlers 默认值:null 剩下的设置定义的是一系列事件处理的回调函数,在SWFUpload的操作过程中相应的事件会被触发。如果你需要在这些回调中进行自定义操作,那么你应该在设置中定义对应的JavaScript函数。 File Object File Object包含了一组可用的文件属性,很多处理事件都会传递一个File Object参数来访问该文件的相关属性。 { id : string, // SWFUpload控制的文件的id,通过指定该id可启动此文件的上传、退出上传等 index : number, // 文件在选定文件队列(包括出错、退出、排队的文件)中的索引,getFile可使用此索引 name : string, // 文件名,不包括文件的路径。 size : number, // 文件字节数 type : string, // 客户端操作系统设置的文件类型 creationdate : Date, // 文件的创建时间 modificationdate : Date, // 文件的最后修改时间 filestatus : number // 文件的当前状态,对应的状态代码可查看SWFUpload.FILE_STATUS } Stats Object 该对象提供了上传队列的状态信息,访问实例的getStats方法可获取此对象。 该对象包括下面属性: { in_progress : number // 值为1或0,1表示当前有文件正在上传,0表示当前没有文件正在上传 files_queued : number // 当前上传队列中存在的文件数量 successful_uploads : number // 已经上传成功(uploadSuccess触发)的文件数量 upload_errors : number // 已经上传失败的文件数量 (不包括退出上传的文件) upload_cancelled : number // 退出上传的文件数量 queue_errors : number // 入队失败(fileQueueError触发)的文件数量 } 所有这些属性的值都可以使用setStats方法来修改,除了in_progress 和 files_queued。

举报

相关推荐

0 条评论