Consulte la guía de uso de SWFUpload:https://www.example.com/w3cnote/swfupload-guide.html

Índice de contenido

  1. SWFUpload
  2. SWFUpload Versión 2
  3. Resumen (Overview))
  4. Introducción (Getting Started))
  5. Objeto JavaScript (SWFUpload JavaScript Object))
    1. Constructor
    2. Variables globales y constantes (Globals and Constants))
      1. 【Nuevo】instances
      2. movieCount
      3. 【Nuevo】QUEUE_ERROR
      4. 【Nuevo】UPLOAD_ERROR
      5. 【Nuevo】FILE_STATUS
      6. 【Nuevo】UPLOAD_TYPE
      7. 【Nuevo】BUTTON_ACTION
      8. 【Nuevo】CURSOR
      9. 【Nuevo】BUTTON_WINDOW_MODE
      10. 【Nuevo】RESIZE_ENCODING
      11. 【Nuevo】onload
    3. Propiedades (Properties)
      1. 【Nuevo】customSettings
      2. movieName
    4. Métodos (Methods)
      1. addSettingEn desuso (deprecated)
      2. getSettingEn desuso (deprecated)
      3. retrieveSettingEliminado (removed in v2.1.0)
      4. destroyAñadido en 2.1.0 (added in v2.1.0)
      5. displayDebugInfo
      6. selectFile
      7. selectFiles
      8. startUpload
      9. 【Nuevo】startResizedUpload (added in v2.5.0)
      10. cancelUpload
      11. stopUpload
      12. 【Nuevo】requeueUpload
      13. getStats
      14. setStats
      15. getFile
      16. 【Nuevo】getQueueFile (added in v2.5.0)
      17. addPostParam
      18. removePostParam
      19. addFileParam
      20. removeFileParam
      21. setUploadURL
      22. setPostParams
      23. setFileTypes
      24. setFileSizeLimit
      25. setFileUploadLimit
      26. setFileQueueLimit
      27. setFilePostName
      28. setUseQueryString
      29. setDebugEnabled
      30. setButtonImageURL (added in v2.2.0)
      31. setButtonDimensions (added in v2.2.0)
      32. setButtonText (added in v2.2.0)
      33. setButtonTextStyle (added in v2.2.0)
      34. setButtonTextPadding (added in v2.2.0)
      35. setButtonDisabled (added in v2.2.0)
      36. setButtonAction (added in v2.2.0)
      37. setButtonCursor (added in v2.2.0)
    5. 【Nuevo】Eventos (Events)
      1. flashReady
      2. 【Nuevo】swfUploadPreload
      3. 【Nuevo】swfUploadLoadFailed
      4. 【Nuevo】swfUploadLoaded
      5. 【Nuevo】buttonAction
      6. fileDialogStart
      7. fileQueued
      8. 【Nuevo】fileQueueError
      9. fileDialogComplete
      10. 【Nuevo】uploadResizeStart
      11. uploadStart
      12. uploadProgress
      13. uploadError
      14. 【Nuevo】uploadSuccess
      15. uploadComplete
      16. debug
    6. Objetos de utilidad (SWFUpload Utility Objects)
      1. Settings Object
      2. Settings Description
      3. 【Nuevo】Support Object
      4. File Object
      5. Stats Object
  6. Plug-ins relacionados (SWFUpload Plug-ins)
  7. 【Nuevo】Problemas conocidos (Known Issues)

SWFUpload

SWFUploadOriginalmente eraVinterwebb.seuna herramienta de carga de archivos en el lado del cliente. Combina JavaScript y Flash, proporcionando en el navegador una funcionalidad superior a la etiqueta de carga tradicional <input type="file" /> (y una buena experiencia de usuario).

Las principales características de SWFUpload:

  • Se pueden seleccionar múltiples archivos en el cuadro de diálogo de exploración de archivos.
  • Carga de archivos estilo AJAX, sin necesidad de recargar la página.
  • Diversos eventos durante el proceso de carga.
  • Se puede ajustar el tamaño de las imágenes en el cliente.
  • Los espacios de nombres de clases que utiliza son compatibles con varias bibliotecas JS (p. ej., jQuery, Prototype, etc.).
  • Compatible con Flash 9 y Flash 10 (el soporte para Flash 8 se eliminó en la versión 2.2.0).

La filosofía de diseño de SWFUpload es diferente a la de otras herramientas de carga basadas en Flash. SWFUpload ofrece al desarrollador el mayor control posible sobre la interfaz de usuario (UI). El desarrollador puede usar XHTML, CSS y JavaScript para adaptarlo al estilo de su propio sitio web. Proporciona un conjunto simple de eventos de JavaScript para actualizar el estado de la carga, y el desarrollador puede mostrar el progreso de la subida de archivos en la página web basándose en estos eventos.

Desafortunadamente, Flash Player 10 nos obliga a usar un botón (después de hacer clic) para poder abrir el diálogo de selección de archivos, pero SWFUpload permite al desarrollador modificar el texto y la apariencia de este botón mediante JavaScript.

SWFUpload v2

SWFUpload v2 incluye muchas características nuevas, estabilidad mejorada, corrige algunos errores de Flash Player y proporciona algunos complementos útiles (Plug-ins). Las nuevas características incluyen:

  • Puede aprovechar las características de seguridad de Flash Player 10.
  • Puede enviar datos adicionales mediante POST junto con la carga.
  • Envía datos POST para cada archivo que se sube.
  • Conjuntos de eventos completos y mejorados.
  • Todos los ajustes y parámetros pueden configurarse de manera flexible.
  • Puede obtener los datos devueltos por el servidor.
  • Puede pausar el archivo que se está subiendo en lugar de cancelarlo.
  • Puede modificar el orden de carga libremente.
  • Puede proporcionar un cuadro de diálogo de selección de archivos único o múltiple.
  • Puede limitar la longitud de la cola de carga, el tamaño de los archivos y la cantidad de archivos a cargar.
  • Puede manejar mejor los archivos de 0 bytes.
  • Cada archivo tiene un evento de confirmación de carga.

Overview

HTML Upload

El cuadro de carga HTML estándar solo ofrece un botón y un campo de texto para que el usuario seleccione un único archivo. Luego se envía mediante el formulario. El archivo completo debe esperar a que termine su carga para poder confirmar y comprobar el tamaño del archivo o su extensión, y durante el proceso de carga hay muy poca retroalimentación. Esto causa algunas inconveniencias de uso.

Pero la carga HTML tradicional es muy simple, de un solo paso, y todos los navegadores la soportan.

SWFUpload

SWFUpload utiliza una película Flash (flash movie) para seleccionar y cargar archivos. La película contiene un botón personalizable que activa el cuadro de diálogo de selección de archivos. El cuadro de diálogo de selección permite al usuario elegir un solo archivo o varios archivos. Los tipos de archivo seleccionables también se pueden restringir; el desarrollador puede limitar al usuario a que solo seleccione los archivos apropiados especificados, por ejemplo *.jgp;*.gif.

Una vez que se seleccionan los archivos y se hace clic en Aceptar, cada archivo se valida y se coloca en la cola. Cuando Flash carga los archivos, se activan los eventos de JavaScript predefinidos por el desarrollador para actualizar la interfaz de usuario en la página, y también se proporcionan en tiempo real el estado de la carga y los mensajes de error.

La carga de archivos es independiente de la página y del formulario. Cada archivo se sube individualmente a la página de procesamiento, lo que permite al servidor manejar los archivos de forma sencilla y fácil. El servicio de carga proporcionado por Flash hace que no sea necesario enviar ni recargar toda la página. Esto se parece un poco a las aplicaciones AJAX. Los datos del formulario en la página se procesan por separado de la carga de archivos controlada por Flash.

Introducción (Getting Started)

SWFUpload no es un control de carga de arrastrar y soltar. Por lo tanto, se requieren algunos conocimientos de DOM y JavaScript. Varios ejemplos (demos) mostrarán las capacidades de SWFUpload y cómo usarlas para completar tareas.

SWFUpload consta de 4 partes:

  1. Inicialización y configuración (JavaScript)
  2. Biblioteca de JavaScript: SWFUpload.js
  3. Control Flash: swfupload.swf y swfupload_fp9.swf
  4. Mecanismo de manejo de eventos (JavaScript)

Muchos de los problemas al usar SWFUpload provienen de la configuración. Un manejo incorrecto de eventos, errores de Flash/navegador o la configuración del servidor.

Inicialización y configuración (Initialization and Settings)

SWFUpload debe inicializarse en la página. Normalmente se hace en el evento window.onload de JavaScript. El constructor de SWFUpload necesita recibir un objeto del tipo Object (JavaScript). Los datos de este objeto se pasan directamente al constructor.

La referencia al objeto SWFUpload inicializado debe conservarse bien (yukon: es decir, almacenarla en una variable, como `swfu` en el ejemplo), porque esta referencia también es necesaria para iniciar la carga de archivos y controlar otras características.

Ejemplo:Al inicializar SWFUpload, se puede pasar directamente un objeto anónimo para configurar los parámetros.

var swfu; window.onload = function () { swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", //处理上传文件的地址 flash_url : "http://www.swfupload.org/swfupload.swf", //核心功能swf的地址 flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", file_size_limit : "20 MB" //文件大小限制 }); };

Ejemplo:También se puede usar una variable de objeto (settings_object) para pasar los parámetros de configuración al inicializar SWFUpload.

var swfu; window.onload = function () { var settings_object = { upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", file_size_limit : "20 MB" }; swfu = new SWFUpload(settings_object); };

Biblioteca de JavaScript (JavaScript library)

Si desea utilizar SWFUpload, el archivo de la biblioteca JavaScript (swfupload.js) debe incluirse en la página que se vaya a usar.

Una vez que se crea el objeto SWFUpload, se puede acceder a numerosas funciones. El desarrollador puede usarlas para controlar SWFUpload.

Ejemplo:Cómo incluir la biblioteca swfupload.js

<script type="text/javascript" src="../www.swfupload.org/swfupload.js"></script>

Ejemplo:Inicialización bajo demanda de SWFUpload.

var swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", button_placeholder_id : "spanSWFUploadButton" //yukon:这里有个新参数,将会使用js在id为"spanSWFUploadButton"的标签容器如span,div中创建一个"选择"按钮 });

【Contenido nuevo】Control Flash (Flash Control)

La biblioteca js de SWFUpload puede cargar dinámicamente el control Flash (swfupload.swf o swfupload_fp9.swf).

La dirección del archivo del control Flash debe definirse en el objeto de configuración de SWFUpload en el momento de la inicialización.

El control Flash es en realidad una pequeña película Flash que puede controlar la selección, validación y carga de archivos.

En la página se presenta al usuario como un botón de interfaz personalizable, y puede detectar la versión de Flash Player (9, 10) para cargar automáticamente el control Flash adecuado a la versión del reproductor del usuario.

Usando flash_url y flash9_url se pueden configurar las rutas de swfupload.swf o swfupload_fp9.swf. (yukon: ya se ha escrito en los ejemplos anteriores)

Manejo de eventos (The Event Handlers)

Los desarrolladores deben crear un conjunto de funciones js para manejar los eventos de SWFUpload. Estas funciones se activan y ejecutan cuando ocurren varios eventos importantes.

Al manejar los eventos de SWFUpload, los desarrolladores pueden proporcionar retroalimentación sobre el progreso de la carga, mensajes de error, finalización de la carga, etc. Nota: los desarrolladores no deben sobrescribir las funciones almacenadas en SWFUpload.prototype.

Ejemplo:Manejo de eventos e inicialización de SWFUpload.

// Función de manejo del evento de inicio de carga (uploadStart). El valor de la propiedad "upload_start_handler" del objeto de configuración debe ser el nombre de esta función. var myCustomUploadStartEventHandler = function (file) { var continue_with_upload; if (file.name === "the sky is blue") { continue_with_upload = true; } else { continue_with_upload = false; } return continue_with_upload; }; // Función de manejo del evento de carga exitosa (uploadSuccess). El valor de la propiedad "upload_success_handler" del objeto de configuración debe ser el nombre de esta función. var myCustomUploadSuccessEventHandler = function (file, server_data, receivedResponse) { alert("The file " + file.name + " has been delivered to the server. The server responded with " + server_data); }; // Create the SWFUpload Object var swfu = new SWFUpload({ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", file_size_limit : "200 MB", upload_start_handler : myCustomUploadStartEventHandler, upload_success_handler : myCustomUploadSuccessEventHandler

Objeto JavaScript de SWFUpload (SWFUpload JavaScript Object)

Constructor

SWFUpload(settings object) //SWFUpload (objeto de configuración)

Devuelve:Una instancia de SWFUpload.

var swfupload_instance = new SWFUpload(settings_object);

Variables globales y constantes (Globals and Constants)

SWFUpload define algunas variables globales y constantes que son muy útiles para aplicaciones avanzadas de SWFUpload y para el manejo de errores; todas son de solo lectura.

【Contenido nuevo】SWFUpload.instances

SWFUpload.instances es un objeto de matriz que almacena referencias a todas las instancias de SWFUpload en una página. Flash Player se basa en este objeto de matriz para llamar a las funciones correctas de manejo de eventos. El índice del objeto de matriz SWFUpload.instances (SWFUpload.instances[index]) es la propiedad movieName.

SWFUpload.movieCount

SWFUpload.movieCount es una variable global que registra cuántas instancias del objeto SWFUpload se han creado en la página y se usa para asegurar que cada película Flash reciba un movieName único.

【Contenido nuevo】SWFUpload.QUEUE_ERROR

SWFUpload.QUEUE_ERROR es un objeto js simple que contiene constantes de códigos de error de cola (Queue Error code). Se utiliza para determinar qué código de error se enviará cuando ocurra un error de cola de archivos (fileQueueError).

SWFUpload.QUEUE_ERROR = { QUEUE_LIMIT_EXCEEDED : -100, FILE_EXCEEDS_SIZE_LIMIT : -110, ZERO_BYTE_FILE : -120, INVALID_FILETYPE : -130 };
  • QUEUE_LIMIT_EXCEEDED - Indica que el usuario puso en cola demasiados archivos, superando la longitud máxima de la cola. Sin embargo, una vez que los archivos en la cola se cargan o se eliminan, el usuario aún puede agregar archivos a la cola de espera de carga.
  • FILE_EXCEEDS_SIZE_LIMIT - Indica que se superó el límite de tamaño de archivo (file_size_limit).
  • ZERO_BYTE_FILE - Indica que el archivo seleccionado es de 0 bytes. Flash Player no puede procesar archivos vacíos. Cargar iconos de acceso directo de Windows también puede desencadenar este error.
  • INVALID_FILETYPE - Indica que la extensión del archivo seleccionado no coincide con la permitida. Este error puede ocurrir cuando el usuario ingresa manualmente un nombre de archivo con una extensión no permitida, en lugar de seleccionar el archivo con un clic del ratón.

【Contenido nuevo】SWFUpload.UPLOAD_ERROR

SWFUpload.UPLOAD_ERROR también es un objeto de matriz js simple que contiene constantes de códigos de error de carga (Upload Error code constants). Se utiliza para determinar qué código de error se enviará cuando ocurra el evento de error de carga (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 };
  • HTTP_ERROR - Se intentó cargar al servidor, pero este no devolvió el código de estado 200 (200 significa sin anomalías).
  • MISSING_UPLOAD_URL - No se ha configurado la dirección de carga (upload_url).
  • IO_ERROR - Ocurrió algún error al leer y enviar el archivo. Generalmente sucede cuando el servidor cierra inesperadamente la conexión del terminal.
  • SECURITY_ERROR - Error de seguridad; la carga viola las restricciones de seguridad. Es poco común.
  • UPLOAD_LIMIT_EXCEEDED - El usuario intentó cargar más archivos que el número preestablecido.
  • UPLOAD_FAILED - Se produjo un error al intentar inicializar la carga. Es poco común.
  • SPECIFIED_FILE_ID_NOT_FOUND - Un archivo comenzó a cargarse, pero no se encontró el archivo. (yukon: después de seleccionar el archivo y agregarlo a la cola, el usuario cambió el nombre del archivo o lo eliminó en el disco, etc.)
  • FILE_VALIDATION_FAILED - Se devolvió algún error cuando comenzó la carga.
  • FILE_CANCELLED - Se canceló la carga (se llamó a la función cancelUpload).
  • UPLOAD_STOPPED - Se pausó la carga (se llamó a la función stopUpload).
  • RESIZE_ERROR - Se produjo algún error al cambiar el tamaño de la imagen.

【Contenido nuevo】SWFUpload.FILE_STATUS

SWFUpload.FILE_STATUS es un objeto de matriz js que contiene constantes de códigos de estado de archivo (File Status code constants). Se utiliza para comprobar la propiedad file status del objeto File.

SWFUpload.FILE_STATUS = { QUEUED : -1, IN_PROGRESS : -2, ERROR : -3, SUCCESS : -4, CANCELLED : -5 };
  • QUEUED - Indica que este archivo está esperando en la cola de carga.
  • IN_PROGRESS - Indica que este archivo se está cargando actualmente.
  • ERROR - Indica que este archivo provocó un error de cola o de carga.
  • COMPLETE - Indica que este archivo se ha transferido correctamente al servidor.
  • CANCELLED - Indica que la carga de este archivo fue cancelada (se llamó a la función cancelUpload).

【Nuevo】SWFUpload.UPLOAD_TYPE [Función: determinar el tipo de carga]

SWFUpload.UPLOAD_TYPE es un objeto de matriz js que contiene constantes de tipo de carga (Upload Type constants). Se utiliza para comprobar la propiedad de tipo de carga del objeto File (upload type property).

  • NORMAL - Carga normal de SWFUpload.
  • RESIZED - Carga de una imagen cuyo tamaño fue ajustado; los datos se envían mediante el método POST de HTTP.

【Contenido nuevo】SWFUpload.BUTTON_ACTION [Función: determina la acción a ejecutar después de hacer clic en el botón]

SWFUpload.BUTTON_ACTION es un objeto de matriz js que contiene constantes de códigos de acción de botón (button action code constants). Se utiliza para establecer el valor de la acción del botón (button_action), permitiendo así configurar las respuestas correspondientes del botón interactivo en la película Flash a varias acciones del ratón.

SWFUpload.BUTTON_ACTION = { SELECT_FILE : -100, SELECT_FILES : -110, START_UPLOAD : -120 }

  • SELECT_FILE - Al hacer clic en el botón, se abre un cuadro de diálogo de selección de un solo archivo. El evento de clic del ratón (configurado en js) no se activará.
  • SELECT_FILES - Al hacer clic en el botón, se abre un cuadro de diálogo de selección de múltiples archivos. El evento de clic del ratón (configurado en js) no se activará.
  • START_UPLOAD - Al hacer clic en el botón, el primer archivo en la cola de carga será cargado. El evento de clic del ratón (configurado en js) no se activará.
  • NONE - En este caso, el evento de clic del ratón (configurado en js) se activará.
  • JAVASCRIPT - Igual que NONE. Este valor está en desuso.

【Contenido nuevo】SWFUpload.CURSOR [Función: cambiar el estilo del cursor]

SWFUpload.CURSOR es un objeto de matriz js que contiene constantes de cursor de botón. Se utiliza para establecer el valor del cursor del botón (button_cursor), cambiando así el estilo del cursor cuando el ratón apunta al botón.

SWFUpload.CURSOR = { ARROW : -1, HAND : -2 }
  • ARROW - El cursor se muestra como un puntero de flecha.
  • HAND - El cursor se muestra como una mano.

【Contenido nuevo】SWFUpload.WINDOW_MODE [Función: modo de visualización de la película]

SWFUpload.WINDOW_MODE es un objeto array de JS que contiene las constantes de parámetros del modo de ventana de la película del botón (button movie wmode parameter constants). Se usa para indicar al navegador cómo presentar la película Flash.

Algunas configuraciones de WINDOW_MODE/WMODE pueden causar problemas en ciertos navegadores. Ver detalles a continuación.Known Issues.

SWFUpload.WINDOW_MODE = { WINDOW : "window", TRANSPARENT : "transparent", OPAQUE : "opaque" };
  • WINDOW es el modo predeterminado. La película Flash se dibuja en la capa superior de la página.
  • OPAQUE permite que otros elementos de la página cubran esta película de botón.
  • TRANSPARENT: transparente. El fondo del botón se vuelve transparente, permitiendo que los elementos HTML se muestren debajo.

[Nuevo] SWFUpload.RESIZE_ENCODING [Función: indica el formato de codificación de la imagen]

SWFUpload.RESIZE_ENCODING es un objeto array de JS que contiene las constantes de tipo de codificación de redimensionamiento (resize encoding type constants). Se utiliza para indicar el formato de codificación de la imagen redimensionada.

  • JPEG: formato de codificación JPEG.
  • PNG: formato de codificación PNG.

[Nuevo] SWFUpload.onload [Función: define la función de operación después de que la página haya terminado de cargarse]

onload es una función que se puede ejecutar mediante el método addDOMLoadEvent de swfobject. A través de este método, puedes ejecutar tu script después de que la página haya terminado de cargarse. Sin embargo, debes asegurarte de no haber utilizado otros métodos similares (por ejemplo, "Ready" del framework jQuery o "dom:loaded" de la biblioteca Prototype).

SWFUpload.onload = function () { new SWFUpload(settingsObject); }

Un ejemplo anterior inicializará SWFUpload en el evento de carga más temprano del navegador. La mayoría de los eventos de preparación del DOM (DOMReady event) se ejecutan justo después del evento window.onload.

Propiedades

Siga las descripciones de la lista de propiedades a continuación para usar estas propiedades. Si se utiliza incorrectamente una propiedad de solo lectura o solo escritura, se producirá un error de SWFUpload.

[Nuevo contenido] customSettings (lectura/escritura) [Función: configuración personalizada por el desarrollador]

La propiedad "customSettings" es un objeto vacío de JS. Se utiliza para almacenar datos relacionados con una instancia de SWFUpload. Su contenido se puede inicializar usando la propiedad custom_settings del objeto de configuración.

Example:

// 初始化 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"; // 添加一个新的自定义设置 // 用一个全新的对象来重写自定义设置 swfu.customSettings = { custom_setting_A : "custom_setting_value_A", custom_setting_B : "custom_setting_value_B" };

Los valores almacenados en el objeto customSettings pueden ser accedidos fácilmente por las funciones de manejo de eventos: (yukon: esta propiedad aprovecha las características dinámicas de JS, otorgando al desarrollador un alto grado de libertad de desarrollo)

function uploadSuccess(file, serverData, receivedResponse) { if (this.customSettings.custom_setting_A === true) { alert("Checked the custom setting!"); } }

movieName (solo lectura) [Función: almacena el identificador único de una instancia de SWFUpload]

Contiene el nombre identificador único de una instancia de SWFUpload. Este valor se puede pasar a Flash para ayudar a la interacción entre ActionScript y JavaScript. Se utiliza para indexar las instancias almacenadas en el array SWFUpload.instances. No debes ni puedes cambiarlo.

Métodos

Los siguientes métodos se utilizan para operar SWFUpload. Algunos métodos pueden vincularse al evento de clic de elementos DOM, otros se invocan internamente para el manejo de eventos de SWFUpload.

object addSetting(setting_name, value, default_value)

En desuso The addSetting function sets a setting value. If the value is undefined then the default_value is used. The function is used by SWFUpload

addSetting returns the value that was stored in the setting.

object getSetting(setting_name)

En desuso The getSetting function retrieves the value of a setting. If the setting is not found an empty string is returned.

object retrieveSetting(setting_value, default_value)

En v2.1.0eliminado. La función retrieveSetting es similar a la función addSetting, excepto que no modifica el objeto de configuración interno. retrieveSetting devuelve el setting_value a menos que esté indefinido, en cuyo caso devuelve el default_value.

This is a utility function.

bool destroy() [Función: destruye una instancia de SWFUpload]

Añadido desde v2.1.0.

Elimina un elemento DOM de SWF y destruye las referencias internas de SWFUpload. Se usa para eliminar por completo una instancia de SWFUpload de la página. Evita problemas de fugas de memoria en IE.

Si la eliminación es exitosa, devuelve true; si ocurre cualquier problema que deje el estado de la instancia de SWFUpload en una condición errónea, devuelve false (devuelve false si ocurre cualquier error dejando la instancia de SWFUpload en un estado inconsistente).

void displayDebugInfo() [Función: muestra información de depuración]

En el evento debug, displayDebugInfo() muestra la configuración de SWFUpload. Si el ajuste debug se establece a true durante la inicialización, esta función se invocará automáticamente.

void selectFile()

No recomendado. No es compatible con Flash Player 10.

selectFile causes the Flash Control to display a File Selection Dialog window. A single file may be selected from the Dialog window.

Calling selectFile begins the File Event Chain.

void selectFiles()

No recomendado. No es compatible con Flash Player 10.

selectFiles causes the Flash Control to display a File Selection Dialog window. A multiple files may be selected from the Dialog window.

Calling selectFiles begins the File Event Chain.

void startUpload(file_id) [Función: comenzar la subida de archivos]

startUpload recibe file_id para subir un archivo. Si no se le pasa el valor file_id, por defecto subirá el primer archivo de la cola de archivos pendientes.

Llamar a startUpload dispara la cadena de eventos de subida (the Upload Event Chain).

[Nuevo] void startResizedUpload(file_id, width, height, encoding, quality, allowEnlarging) [Función: subida con redimensionamiento de imagen]

startResizedUpload recibe el parámetro file_id para subir un archivo. SWFUpload intenta ajustar las dimensiones y otras configuraciones del archivo (si es un formato de imagen compatible con Flash). Si el formato de imagen no es compatible, se provocará un error de subida (uploadError).

Los parámetros width y height se utilizan para establecer el ancho y alto máximos de la imagen. Sin embargo, durante el redimensionamiento se mantendrá la relación de aspecto de la imagen.

El valor de encoding debe ser una constante existente en SWFUpload.RESIZE_ENCODING.

quality solo se puede usar para ajustar la calidad de las imágenes en formato JPEG. Acepta un rango de 0-100. Si está fuera de este rango, se forzará a 0 o 100.

El parámetro allowEnlarging define si SWFUpload permite ampliar la imagen original (por defecto es true). Si las dimensiones de la imagen original son menores que el width y height mencionados anteriormente, y si se establece su valor en false, la imagen se codificará pero no se ampliará.

Llamar al método startResizedUpload desencadena una cadena de eventos de subida normal. Sin embargo, Flash Player no proporciona eventos uploadProgress periódicamente. SWFUpload solo enviará eventos de progreso de subida (uploadProgress events) simulados de 0% y 100%.

La imagen redimensionada se transmite mediante POST (a diferencia de como se hace con FILE), porque Flash Player 10 introdujo características de seguridad.La página de procesamiento PHP para la subida con redimensionamiento de imagen es diferente de la página de procesamiento PHP para la subida normal:

$resizedImageData = $_POST["Filedata"]; // 服务器端以$_POST方式接收数据而不是 $_FILE $fileHandle = fopen("image.jpg", "w"); //以file系列操作函数来存储图片 fwrite($fileHandle, $resizedImageData); fclose($fileHandle);

void cancelUpload(file_id, trigger_error_event) [Función: eliminar una subida]

cancelUpload recibe el parámetro file_id para eliminar la subida de un archivo. Este archivo se eliminará de la cola de archivos pendientes.

Si no se le pasa file_id, por defecto se cancelará el primer archivo de la cola de subida.

Si el parámetro opcional trigger_error_event se establece en false, el evento uploadError no se disparará.

void stopUpload() [Función: detener la subida de archivos]

stopUpload detiene el archivo que se está subiendo actualmente y lo devuelve a la cola de archivos pendientes. (yukon: a diferencia de eliminar, esto cancela la subida del archivo, pero no lo elimina de la cola de subida)

Al llamar a stopUpload, si hay un archivo subiéndose, se disparará el evento uploadError; si no hay ningún archivo subiéndose en ese momento, no ocurrirá ninguna operación ni se disparará ningún evento.

[Nuevo] bool requeueUpload(file_id or index) [Función: volver a poner en cola]

requeueUpload vuelve a añadir a la cola de espera de subida un archivo que anteriormente había sido puesto en cola.

Devuelve false si el archivo no se encuentra o si se está subiendo actualmente.

Nota: los archivos re-puestos en cola no serán verificados nuevamente en cuanto a tamaño de archivo, tamaño de cola, número total de subidas u otras restricciones; solo se añadirán a la cola, si la referencia del archivo aún existe.

object getStats() [Función: devuelve el objeto de estado actual]

Devuelve el objeto de estado (stats object).

void setStats(stats_object) [Función: establecer o modificar el objeto de estado]

Establece o modifica el objeto de estado (Stats Object). Si deseas cambiar el número de subidas exitosas o fallidas después de completar las subidas, puedes usar este método.

object getFile(file_id|index) [Función: obtener un objeto de archivo específico de la cola]

getFile recibe un file id (el id de un objeto de archivo) o un file index (la propiedad index de un objeto de archivo) y devuelve el objeto de archivo que se encuentra en la cola.

Al pasar un file_id a getFile, solo los archivos que están en la cola pueden obtenerse; si no se encuentra el archivo, se devuelve null.

Al pasar un index a getFile, todos los archivos que intentaron entrar en la cola (incluidos aquellos que produjeron errores al encolarse) pueden obtenerse. Si el índice está fuera de rango, se devuelve null.

【Nuevo】object getQueueFile(file_id|index)【Función: devuelve un objeto de archivo específico en la cola de espera de subida】

getQueueFile se usa para devolver un único objeto de archivo desde la cola de espera de subida. Específicamente, recibe un file id (el id de un objeto de archivo) o un file index (la propiedad index de un objeto de archivo) y devuelve el objeto de archivo en la cola. El índice index comienza desde 0.

Al pasar un file_id a getQueueFile, solo los archivos en la cola de espera de subida pueden obtenerse; si no se encuentra el archivo, se devuelve null.

Al pasar un index a getQueueFile, solo los archivos en la cola de espera de subida pueden obtenerse. Por ejemplo: getQueueFile(0) devuelve un objeto de archivo al inicio de la cola de espera de subida. Si se llama a la función startUpload, este se subirá después de que termine la subida del archivo actual.

(yukon: la diferencia entre los dos métodos anteriores podría ser: getFile obtiene archivos de la cola de archivos, incluyendo los subidos, los erróneos y los de la cola de espera de subida. Mientras que getQueueFile solo obtiene archivos de la cola de espera de subida).

void addPostParam(name, value)【Función: agrega un par clave/valor】

addPostParam agrega un par clave/valor, que se envía adjunto por POST cuando se sube cada archivo.

Corresponde al mismo par clave/valor de la configuración post_params. Si ese valor ya existe en post_params, en realidad será sobrescrito.

void removePostParam(name)【Función: elimina un par clave/valor】

removePostParam elimina un par clave/valor que previamente se enviaba adjunto por POST al subir cada archivo.

Corresponde al mismo par clave/valor de la configuración post_params. Si ese valor ya existe en post_params, en realidad será eliminado.

bool addFileParam(file_idspan>, name, value)

Agrega un par clave/valor POST a un objeto de archivo con el file_id especificado. Si la propiedad name agregada ya existe, el valor original se sobrescribe.

Si se necesita agregar valores POST a todos los objetos de archivo, se puede utilizar la propiedad post_params de la configuración.

bool removeFileParam(file_id, name)

Elimina el par de valores POST agregado por addFileParam.

Si no existe esta propiedad en la configuración POST, se devuelve false.

void setUploadURL(url)

Modifica dinámicamente la propiedad upload_url de la configuración.

void setPostParams(param_object)

Modifica dinámicamente post_params; todas las propiedades anteriores son sobrescritas. param_object debe ser un objeto simple de JavaScript; todas las propiedades y valores deben ser de tipo cadena.

void setFileTypes(types, description)

Modifica dinámicamente file_types y file_types_description de la configuración; ambos parámetros son obligatorios.

void setFileSizeLimit(file_size_limit)

Modifica dinámicamente file_size_limit de la configuración; este cambio es efectivo para el filtrado de tamaño de archivo posterior. El parámetro file_size_limit acepta una unidad; las unidades válidas son B, KB, MB, GB; la unidad predeterminada es KB.

Por ejemplo: 2147483648 B, 2097152, 2097152KB, 2048 MB, 2 GB

void setFileUploadLimit(file_upload_limit)

Modifica dinámicamente file_upload_limit de la configuración; el valor especial 0 indica sin límite.

Nota:Aquí se limita el número total de archivos subidos con éxito controlados por una instancia de SWFUpload.

void setFileQueueLimit(file_queue_limit)

Modifica dinámicamente file_queue_limit de la configuración; el valor especial 0 indica sin límite.

Nota:Aquí se limita el número total de archivos permitidos en la cola de subida (los archivos que pasan la verificación de encolado se agregan a la cola de espera de subida).

void setFilePostName(file_post_name)

Modifica dinámicamente file_post_name de la configuración. Nota: en entornos Linux, FlashPlayer ignora esta configuración.

void setUseQueryString(use_query_string)

Modifica dinámicamente use_query_string de la configuración. Cuando se establece en true, SWFUpload envía los datos mediante GET; si es false, los envía mediante POST.

void setDebugEnabled(debug_enabled)

Activa/desactiva dinámicamente la salida de depuración (debug); el parámetro debug_enabled es un valor booleano.

void setButtonImageURL(url)

Modifica dinámicamente la imagen del botón. El parámetro url es una imagen relativa al archivo swf o una dirección absoluta (por ejemplo: una ruta relativa que comienza con / o una ruta absoluta: http://www.swfupload.org/buttonImage.png). Todos los tipos de imagen compatibles con FLASH pueden usarse (gif, jpg, png).

La imagen del botón debe procesarse de acuerdo con ciertas reglas (CSS Sprite). La imagen del botón debe incluir los 4 estados del botón, de arriba a abajo: normal, hover, down/click, disabled. (Puede consultar la imagen en la demo oficial).

void setButtonDimensions(width, height)

Modifica dinámicamente el tamaño de la película SWF para adaptarse al tamaño de la imagen del botón. El valor debe ser un número puro, sin incluir unidades de longitud. La altura debe ser 1/4 de la altura total de la imagen del botón, para garantizar una visualización correcta.

void setButtonText(text)

Establece dinámicamente el texto mostrado en el Flash Button, compatible con HTML. El estilo del texto HTML se puede configurar mediante selectores CSS junto con el método setButtonTextStyle. Si el texto es demasiado grande, la parte que exceda se ocultará. Para más detalles sobre el soporte de HTML en el texto Flash, consulte.Adobe's Flash documentation。

void setButtonTextStyle(css_style_text)

Junto con el método setButtonText, se pueden configurar dinámicamente los estilos de texto en el Flash Button mediante estilos CSS. Para más detalles sobre el soporte de CSS en el texto Flash, consulte.Adobe's Flash documentation

void setButtonTextPadding(left, top)

Establece el padding izquierdo y derecho del texto del botón Flash. Los valores pueden ser negativos.

void setButtonDisabled(isDisabled)

Al establecerlo en 'true' se deshabilita el botón Flash; cualquier acción u operación relacionada con el botón será ignorada.

void setButtonAction(buttonAction)

Define la acción que se ejecuta al hacer clic con el mouse. La enumeración de constantes BUTTON_ACTION almacena los valores disponibles para este método.

void setButtonCursor(buttonCursor)

Establece el estilo del puntero del mouse cuando apunta al botón. La enumeración de constantes CURSOR almacena los valores disponibles para este método.

【Contenido nuevo】Eventos Events

SWFUpload dispara una serie de eventos durante su funcionamiento. Los desarrolladores pueden utilizar estos eventos de devolución de llamada para controlar la interfaz de usuario, controlar las operaciones o informar errores.

Todos los eventos se invocan en el contexto de la instancia de SWFUpload, por lo que usar this en estos eventos de devolución de llamada permite acceder directamente a la instancia que disparó el evento.

Todos los eventos deben configurarse previamente en el parámetro setting al inicializar la instancia.

【Nuevo:】

Al subir un archivo, los eventos se invocan en el siguiente orden (cadena de eventos de subida):

  • uploadResizeStart: inicio de la subida con la función de ajuste de tamaño de imagen añadida.
  • uploadStart: inicio de subida normal.
  • uploadProgress: subida en curso (se invoca repetidamente durante el proceso de subida del archivo).
  • uploadError: error de subida (se invoca cuando ocurre algún error; el archivo en subida será cancelado o detenido).
  • uploadSuccess: subida exitosa (el archivo se subió correctamente y el servidor recibió datos utilizables).
  • uploadComplete: subida completada (la subida ha terminado; SWFUpload se prepara para subir el siguiente).

flashReady()

Esta función de evento es un evento interno, por lo que no puede ser sobrescrita. Cuando el control FLASH cargado complete todas las operaciones de inicialización, este evento se disparará para notificar a SWFUpload que puede aceptar varios comandos.

Nota:Corresponde al evento personalizado swfupload_loaded_handler de la configuración.

【Nuevo】swfUploadPreload()

El evento swfUploadPreload se dispara en el período posterior a que SWFUpload haya confirmado las características disponibles y antes de que Flash Movie haya terminado de cargarse. Si el manejador de este evento devuelve false, se detendrá la carga de swfupload. Normalmente se usa para manejar situaciones en las que el navegador no soporta algún parámetro de característica importante.

Este manejador de eventos puede configurarse en la propiedad swfupload_preload_handler del objeto de configuración.

【Nuevo】swfUploadLoadFailed()

Cuando la página no puede cargar la película Flash correctamente. Generalmente se debe a que Flash Player no está instalado o su versión es inferior a 9.0.28.

Este manejador de eventos puede configurarse en la propiedad swfupload_load_failed_handler del objeto de configuración.

【Nuevo】swfUploadLoaded()

El evento swfUploadLoaded se dispara cuando Flash ha cargado y está listo. Es configurable. El evento swfUploadLoaded le notificará que Flash ha terminado de cargar y que puede ejecutar varios métodos de forma segura.

Este manejador de eventos puede configurarse en la propiedad swfupload_loaded_handler del objeto de configuración.

【Nuevo】mouseClick()

El evento mouseClick solo se dispara cuando se hace clic en el botón (y el valor de la configuración button_action es SWFUpload.BUTTON_ACTION.NONE, o cuando el botón flash está configurado como deshabilitado). Si el valor de la configuración button_action es otro, o el botón flash está disponible, este evento no se dispara.

En la propiedad mouse_click_handler del objeto de configuración se puede establecer esta función de manejo de eventos.

【Nuevo】mouseOver()

El evento mouseOver se disparará cuando el mouse se mueva sobre cualquier parte de la película flash.

En la propiedad mouse_over_handler del objeto de configuración se puede establecer esta función de manejo de eventos.

【Nuevo】mouseOut()

El evento mouseOut se dispara cuando el mouse sale de la película flash.

En la propiedad mouse_out_handler del objeto de configuración se puede establecer esta función de manejo de eventos.

fileDialogStart()

Este evento se dispara después de llamar a selectFile o selectFiles, antes de que se muestre el diálogo de selección de archivos. Solo puede existir un diálogo de archivos a la vez.Sin embargo, esta función de manejo de eventos no se ejecutará hasta que se cierre el diálogo de selección de archivos.

En la propiedad file_dialog_start_handler del objeto de configuración se puede establecer esta función de manejo de eventos.

fileQueued(file object)

Cuando se han seleccionado los archivos y el diálogo de selección de archivos se cierra y desaparece, si los archivos seleccionados se agregan correctamente a la cola de carga, este evento se dispara una vez por cada archivo agregado correctamente (si N archivos se agregan correctamente a la cola, este evento se dispara N veces).

Corresponde al evento personalizado file_queued_handler en la configuración.

【Contenido nuevo】fileQueueError(file object, error code, message)

 

Cuando el diálogo de selección de archivos se cierra, si los archivos seleccionados fallan al agregarse a la cola de carga, este evento se dispara una vez por cada archivo con error (este evento y el evento fileQueued se disparan de forma excluyente; solo hay dos posibilidades al agregar un archivo a la cola: éxito o fracaso).

Las posibles razones del error al poner el archivo en cola pueden ser: 1. Se superó el límite de tamaño de carga, 2. El archivo es de cero bytes, 3. Se superó el límite de cantidad de la cola de archivos, 4. Tipo de archivo no válido fuera de los permitidos.

(yukon: Tras las pruebas, el contenido de message es el siguiente:

1. Se superó el límite de tamaño de carga: message=File size exceeds allowed limit.

2. El archivo es de cero bytes: message=File is zero bytes and cannot be uploaded.

3. Se superó el límite de cantidad de la cola de archivos: message=int (se refiere al número de límite de tamaño de cola que hayas establecido)

4. Tipo de archivo no válido fuera de los permitidos: message=File is not an allowed file type.

Si deseas cambiar estos mensajes, modifícalos en swfupload.as dentro del paquete de código abierto y luego recompílalo como swfupload.swf.

)

La razón específica del error se puede obtener mediante el parámetro error code; el tipo de error code se puede consultar en la definición en SWFUpload.QUEUE_ERROR.

Aviso:Corresponde al evento personalizado file_queue_error_handler en la configuración.

Nota:Si el número de archivos seleccionados para poner en cola supera el límite de cantidad en la configuración, entonces ningún archivo se pondrá en cola y este evento se dispara solo una vez. Si no se supera el límite de cantidad, se realiza una verificación de tipo y tamaño para cada archivo; para los archivos que no la superen, se dispara este evento, y los archivos que la superan se ponen en cola correctamente.

fileDialogComplete(number of files selected, number of files queued, total number of files in the queued)

Cuando el diálogo de selección de archivos se cierra y todos los archivos seleccionados han sido procesados (ya sea que se hayan agregado correctamente a la cola de carga o que hayan fallado), este evento se dispara. "number of files selected" es el número de archivos seleccionados, y "number of files queued" es el número de archivos de esta selección que se agregaron correctamente a la cola.

Aviso:Corresponde al evento personalizado file_dialog_complete_handler en la configuración.

Nota:Si deseas que los archivos se carguen automáticamente después de la selección, llamar a this.startUpload() en este evento es una buena opción. Si necesitas una verificación más estricta, antes de llamar a la carga puedes comprobar el número de archivos en cola; si es mayor que 0, puedes comenzar la carga.

【Nuevo】uploadResizeStart(file object, width, height, encoding, quality)

La función de manejo del evento uploadResizeStart se llama cuando una imagen comienza a cambiar de tamaño. Durante el ajuste de tamaño no se proporcionan eventos de progreso ni métodos de manejo. Sin embargo, recodificar la imagen llevará algún tiempo. Si ocurre un error durante este período, se disparará el evento uploadError.

Cuando se completa el ajuste de tamaño, SWFUpload continúa disparando el evento uploadStart y comienza la misma cadena de eventos que en una carga normal.

uploadStart(file object)

El evento uploadStart se dispara antes de que el archivo comience a cargarse al servidor. Esta función de manejo de eventos puede realizar la validación final antes de la carga y otras operaciones que necesites, como agregar, modificar o eliminar datos post.

Después de completar las operaciones finales, si la función devuelve false, la carga no se iniciará; si devuelve true o no devuelve nada, la carga se iniciará oficialmente.

Aviso:Corresponde al evento personalizado upload_start_handler en la configuración.

uploadProgress(file object, bytes complete, total bytes)

El evento uploadProgress se dispara periódicamente desde el control flash.Proporciona tres parámetros para acceder respectivamente al objeto de archivo de carga, a los bytes subidos y al total de bytes. Por lo tanto, en este evento puedes actualizar periódicamente los elementos de UI de la página para mostrar el progreso de la carga de manera oportuna.

Nota:En Linux, Flash Player solo dispara este evento una vez después de que el archivo completo se haya cargado. La documentación oficial indica que esto es un bug de Flash Player en Linux, que la biblioteca SWFupload no puede resolver actualmente.。

Aviso:Corresponde al evento personalizado upload_progress_handler en la configuración.

uploadError(file object, error code, message)

Cuando la carga se termine o no se complete con éxito, entoncesuploadErrorel evento se disparará. El parámetro error code indica el tipo de error actual; para tipos de error más específicos, consulteSWFUpload.UPLOAD_ERRORlas definiciones en . El parámetro Message representa la descripción del error. El parámetro File representa el objeto de archivo cuya carga falló.

Por ejemplo, si solicitamos una página de procesamiento de archivos en el servidor que no existe, entonces error code será -200 y message será 404. La detención, la salida, que uploadStart devuelva false, errores HTTP, errores de E/S, exceder el límite de cantidad de carga de archivos, etc., dispararán este evento. Upload error no se disparará para archivos que se cancelaron pero que aún están esperando en la cola.(Todavía tengo dudas sobre esta declaración oficial: ¿cómo puede un archivo permanecer en la cola de carga después de salir?)

Aviso:Corresponde al evento personalizado upload_error_handler en la configuración.

Nota:En este punto, el ciclo de carga del archivo aún no ha terminado; no se puede comenzar a cargar el siguiente archivo aquí.

【Contenido nuevo】uploadSuccess(file object, server data, received response)

Cuando el procesamiento de la carga del archivo se ha completado (aquí "completado" solo significa que se ha enviado la información de Files al controlador de destino; solo se preocupa por enviar, no por si se recibió correctamente), y el servidor devuelve un estado HTTP de 200, entoncesuploadSuccessse dispara el evento.server datase refiere a algunos datos enviados por el servidor (como los que tú mismo echo), yreceived responsees el código de estado HTTP enviado por el propio servidor.

Debido a algunos bugs de Flash Player, es posible que no se obtenga el código de estado HTTP, lo que impide que se dispare el evento uploadSuccess. Por esta razón, la versión 2.50 añadió una nueva propiedad assume_success_timeout al objeto de configuración, utilizada para establecer si se ha superado el tiempo máximo de espera para recibir el código de estado HTTP; si se supera, se dispara uploadSuccess. En este caso,(received response)el parámetro quedará sin efecto.

La propiedad http_success del objeto de configuración permite que el evento uploadSuccess se dispare también cuando el código de estado HTTP sea un valor distinto de 200. In this case no server data is available from the Flash Player.

En

Aviso:Corresponde al evento personalizado upload_success_handler en la configuración.

Nota:
  1. server data son los datos devueltos por el programa de procesamiento del servidor.
  2. En este punto, el ciclo de carga del archivo aún no ha terminado; no se puede comenzar a cargar el siguiente archivo aquí.
  3. En la plataforma Windows, el programa de procesamiento del servidor debe devolver un valor no vacío después de completar el almacenamiento del archivo; de lo contrario, este evento no se disparará y el evento uploadComplete posterior tampoco podrá ejecutarse.

uploadComplete(file object)

Cuando un archivo en la cola de carga completa un ciclo de carga, ya sea con éxito (se dispara uploadSuccess) o con error (se dispara uploadError), se dispara el evento uploadComplete, lo que también marca la finalización de la carga de un archivo y se puede proceder a cargar el siguiente.

Si se desea que el siguiente archivo se cargue automáticamente, en este momento llamar a this.startUpload() para iniciar la carga del siguiente archivo es una buena opción. Sin embargo, debe usarse con precaución. Ver nota.

Recordatorio:Corresponde al evento personalizado upload_complete_handler en la configuración.

Nota:Cuando se están cargando múltiples archivos y a mitad de camino se cancela el archivo en carga mediante cancelUpload, o se detiene el archivo en carga con stopUpload, entonces se debe tener mucho cuidado al usar this.startUpload() dentro de uploadComplete, porque en los casos mencionados, uploadError y uploadComplete se ejecutan en secuencia; por lo tanto, aunque se detenga la carga del archivo actual, inmediatamente se iniciará la carga del siguiente archivo. Puede parecer extraño, pero de hecho el programa no está fallando. Si se desea detener la carga automática de toda la cola, es necesario realizar un manejo adicional en el programa.

debug(message)

Si el ajuste debug está establecido en true, se añadirá automáticamente un textArea en la parte inferior de la página. Si este evento debug no ha sido sobrescrito, tanto la librería SWFUpload como Flash invocarán este evento para añadir información de depuración en el cuadro de salida en la parte inferior de la página, para su uso en la depuración.

Recordatorio:Corresponde al evento personalizado debug_handler en la configuración.

Objetos de utilidad de SWFUpload

Objeto de configuración (Settings object)

Es una variable de tipo Object de JavaScript que proporciona la configuración para la inicialización de una instancia de SWFUpload.Cada propiedad de configuración en él solo puede aparecer una vez.Muchas propiedades son opcionales; si una propiedad opcional no está configurada, se usará el valor adecuado especificado por defecto en la librería SWFUpload. Para más detalles, consulte la descripción detallada de settings.

Por ejemplo:(Todas las propiedades que se pueden configurar en settings)

Example:

{ upload_url : "http://www.swfupload.org/upload.php", flash_url : "http://www.swfupload.org/swfupload.swf", flash9_url : "http://www.swfupload.org/swfupload_fp9.swf", 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, http_success : [201, 202], assume_success_timeout : 0, file_types : "*.jpg;*.gif", file_types_description: "Web Image Files", file_size_limit : "1024", file_upload_limit : 10, file_queue_limit : 2, debug : false, prevent_swf_caching : false, preserve_relative_urls : false, button_placeholder_id : "element_id", button_image_url : "http://www.swfupload.org/button_sprite.png", button_width : 61, button_height : 22, button_text : "<b>Click</b> <span class="redText">here</span>", 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, mouse_click_handler : mouse_click_function, mouse_over_handler : mouse_over_function, mouse_out_handler : mouse_out_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", } }

Descripción detallada de los parámetros de configuración (Settings Description)

[Nuevo] upload_url

Valor por defecto:Cadena vacía

La configuración de upload_url recibe una URL completa, absoluta o relativa al archivo SWF. Se recomienda usar una ruta absoluta completa para evitar errores en la ruta de solicitud causados por el navegador y Flash Player al modificar la configuración de la ruta base. (yukon: esto es en realidad relativo; si tu swfupload y la página de procesamiento de carga de PHP siempre están en la misma carpeta del sitio, yo recomendaría usar una ruta relativa)

Si la propiedad preserve_relative_urls del objeto de configuración es false, SWFUpload convertirá las rutas relativas en rutas absolutas para evitar que la URL sea interpretada en diferentes formatos por Flash Player en distintos sistemas. Si desactivas esta conversión de SWFUpload, deberías usar rutas relativas para especificar la ubicación de swfupload.swf.

Nota:Aquí se debe considerar el modelo de dominio de seguridad de Flash Player.

file_post_name

Valor por defecto:Filedata

El parámetro file_post_name le permite establecer el valor del nombre (name) del archivo cargado en la información POST (similar al atributo name de <input type="file" name="Filedata"/> en un formulario tradicional).

Nota: (pendiente para la versión 2.5)En Linux, este parámetro no tiene efecto; el nombre recibido es siempre "Filedata". Por lo tanto, para garantizar la máxima compatibilidad, se recomienda usar el valor por defecto para este parámetro.

[Nuevo] post_params

Valor por defecto:Un objeto Object vacío

post_params define un conjunto de pares clave/valor que permite enviar datos adicionales al servidor junto con cada archivo durante la carga. Esta propiedad se puede asignar con un objeto array de JavaScript. Los pares clave/valor deben ser solo cadenas o números. (Se puede comprobar con la función typeof() de JavaScript)

Nota: Flash Player 8 no admite el envío de datos POST adicionales. SWFUpload enviará automáticamente post_params en forma de query string.

use_query_string

Valor por defecto:false

El valor de esta propiedad puede ser true o false; establece si post_params se envía mediante GET. Si es false, se envía mediante POST. Introducido desde v2.1.0.

[Nuevo] preserve_relative_urls

Valor por defecto:false

preserve_relative_urls tiene como valor posible una variable booleana. Indica si SWFUpload convierte o no las URL relativas en absolutas. Si se establece en true, no se realizará la conversión. El valor por defecto es false, es decir, se convierte automáticamente.

requeue_on_error

Valor por defecto:false

El valor de esta propiedad puede ser true o false. Si se establece en true, cuando un objeto de archivo experimenta un error uploadError (excepto errores de fileQueue y errores FILE_CANCELLED), el objeto de archivo se vuelve a insertar al frente de la cola de carga de archivos, en lugar de descartarse. Si es necesario, el archivo reinsertado puede cargarse nuevamente. Si se desea eliminar ese objeto de archivo de la cola de carga, se debe usar el método cancelUpload.

Todos los eventos asociados con el fallo de carga también se dispararán uno a uno, por lo que volver a poner en cola un archivo cuya carga falló puede causar conflictos con Queue Plugin (o con el código personalizado que carga automáticamente toda la cola de archivos). Si en el código se llama al método startUpload para cargar automáticamente el siguiente archivo y además no se toma ninguna medida para sacar de la cola al archivo que falló, ese archivo fallido reinsertado comenzará a cargarse de nuevo, luego fallará de nuevo, se reinsertará, se cargará de nuevo... entrando en un bucle sin fin.

Esta configuración se introdujo en v2.1.0.

http_success

Valor por defecto:[]

Este array permite personalizar los códigos de estado HTTP que disparan el evento success. El código de estado 200 siempre dispara success, y solo el estado 200 proporciona serverData.

Cuando se acepta un código de estado HTTP distinto de 200, el servidor no necesita devolver contenido.

[Nuevo] assume_success_timeout

Valor por defecto: 0

assume_success_timeout establece cuántos segundos esperará SWFUpload para detectar la respuesta del servidor; al superar el tiempo de espera, se forzará el disparo del evento de carga exitosa (uploadSuccess). Esta propiedad sirve para funcionar correctamente bajo errores de Flash Player, evitando largas esperas de respuesta del servidor y resolviendo el error de Flash Player en el sistema operativo Mac que impide que el servidor devuelva contenido.

Flash ignorará la respuesta del servidor 30 segundos después de que se dispare el último evento uploadProgress y forzará el disparo del evento de carga exitosa.

Si assume_success_timeout se establece en 0, esta característica se desactiva. SWFUpload esperará durante mucho tiempo a que Flash Player dispare el evento uploadSuccess.

file_types

Valor por defecto:*.*

Establece las reglas de filtrado de tipos de archivo en el cuadro de diálogo de selección de archivos. Esta propiedad recibe extensiones de tipo de archivo separadas por punto y coma, por ejemplo "*.jpg;*.gif", lo que permite que el usuario solo vea y seleccione archivos de tipo jpg y gif en el cuadro de diálogo. Por defecto se aceptan todos los tipos de archivo.

Recordatorio:Esta configuración es solo un filtro del navegador del cliente; no impone ninguna restricción de filtrado de tipos de archivo en el procesamiento del lado del servidor. Si necesita hacer un filtrado estricto de archivos, el servidor también debe realizar una detección mediante programación.

file_types_description

Valor por defecto:All Files

Establece la descripción del archivo que se muestra al usuario en el cuadro de diálogo de selección de archivos.

file_size_limit

Valor por defecto:0

Establece las reglas de filtrado de tamaño de archivo en el cuadro de diálogo de selección de archivos. Esta propiedad acepta un valor numérico con unidad; las unidades disponibles son B, KB, MB, GB. Si se omite la unidad, se usa KB por defecto. El valor especial 0 indica que no hay límite de tamaño de archivo.

Recordatorio:Esta configuración solo es válida en el navegador del cliente; no tiene ninguna restricción en el procesamiento de archivos del lado del servidor. Si necesita hacer un filtrado estricto de archivos, el servidor también debe procesarlo mediante programación.

file_upload_limit

Valor por defecto:0

Establece el número máximo de archivos que la instancia de SWFUpload permite cargar, y también es el límite superior de la propiedad file_queue_limit en el objeto de configuración. Una vez que el usuario ha cargado exitosamente o ha añadido archivos a la cola alcanzando el número máximo, no se pueden añadir más archivos. El valor especial 0 indica que no hay límite en la cantidad de archivos. Solo los archivos cargados exitosamente (cuando la carga dispara el evento uploadSuccess) cuentan para el límite de carga. El método setStats puede usarse para modificar la cantidad de archivos cargados exitosamente.

Nota:Este valor no se puede usar entre páginas; se restablece cuando la página se actualiza. El límite estricto de cantidad de archivos cargados debe ser detectado y gestionado por el servidor.

file_queue_limit

Valor por defecto:0

Establece el límite máximo de archivos en espera en la cola de carga. Cuando un archivo se carga exitosamente, da error o se cancela la carga, si el número de archivos en la cola aún no ha alcanzado el límite máximo, se pueden seguir añadiendo nuevos archivos a la cola para ocupar el lugar de ese archivo en la cola de carga. Si el límite de archivos permitidos para cargar (file_upload_limit) o la cantidad restante de archivos permitidos es menor que el límite de la cola de archivos (file_queue_limit), se usará ese valor menor.

flash_url

Valor predeterminado:Cadena vacía

Establece la URL completa, absoluta o relativa a esta página de carga. Una vez que se ha instanciado SWFUpload, esta configuración ya no puede modificarse.

Aviso:Las pruebas han revelado que se puede modificar esta configuración mediante el método setUploadURL.

[Nuevo] flash9_url

(Nuevo en v2.5.0)URL absoluta o relativa del control Flash (swf) compatible con Flash Player 9

flash_width

(Eliminado en v2.1.0) Defines the width of the HTML element that contains the flash. Some browsers do not function correctly if this setting is less than 1 px. This setting is optional and has a default value of 1px.

flash_height

(Eliminado en v2.1.0) Defines the height of the HTML element that contains the flash. Some browsers do not function correctly if this setting is less than 1 px. This setting is optional and has a default value of 1px.

flash_color

(Eliminado en v2.2.0) This setting sets the background color of the HTML element that contains the flash. The default value is '#FFFFFF'.

Note: This setting may not be effective in "skinning" 1px flash element in all browsers.

prevent_swf_caching

Valor predeterminado:true

(Nuevo en v2.2.0)Este valor booleano establece si se añade un valor aleatorio después de la URL de Flash para evitar que el navegador almacene en caché la película SWF. Esto se hizo para solucionar un error presente en algunos navegadores basados en el motor de IE.

Aviso:SWFUpload añade directamente un parámetro aleatorio llamado swfuploadrnd después de flash_url. Si la flash_url proporcionada ya contiene parámetros de tipo GET, aparecerán dos signos de interrogación como conectores, lo que provocará un error.

debug

Valor predeterminado:false

Este valor es de tipo booleano y establece si se dispara el evento debug.

Nota:En el código de SWFUpload se compara esta variable con la cadena true mediante una igualdad estricta, por lo que solo reconoce true como modo DEBUG activado. Si se establece en 1, aunque JavaScript lo considera activado y se generará una consola de depuración tras la inicialización, Flash no emitirá información de depuración en operaciones posteriores. (Porque estaba acostumbrado a usar 1 y 0 para representar variables booleanas, por lo que durante un tiempo me pregunté por qué Flash no emitía información de depuración).

button_placeholder_id

Valor predeterminado:null

(Nuevo en v2.2.0)Este parámetro obligatorio especifica el valor de ID del elemento DOM dentro de la página que será reemplazado por swfupload.swf. Cuando el elemento DOM correspondiente se reemplaza por el elemento SWF, al contenedor del SWF se le añade un selector de estilo llamado 'swfupload' para su uso en personalización CSS.

button_image_url

Valor predeterminado:Cadena vacía

(Nuevo en v2.2.0)El mayor cambio en la versión V2.2.0 fue la introducción de un botón dentro del SWF. Con este parámetro se puede establecer una imagen (o un SWF) con dirección relativa a ese archivo swf o absoluta, como presentación de la interfaz del botón. Se pueden utilizar todos los tipos de imagen compatibles con Flash (gif, jpg, png o un SWF).

La imagen del botón debe procesarse según ciertas reglas (CSS Sprite). La imagen del botón debe incluir los 4 estados del botón, de arriba a abajo: normal, hover, down/click, disabled. (Se puede consultar la imagen en el demo oficial).

button_width

Valor predeterminado:1

(Nuevo en v2.2.0)Establece el atributo de ancho del SWF.

button_height

Valor predeterminado:1

(Nuevo en v2.2.0)Establece el atributo de alto del SWF (1/4 de la altura de la imagen del botón).

button_text

Valor predeterminado:Cadena vacía

(Nuevo en v2.2.0)Esta propiedad establece el texto que se muestra en el botón Flash y es compatible con HTML. El estilo del texto HTML se puede configurar mediante selectores CSS junto con el parámetro button_text_style. Para más detalles sobre el soporte de HTML en el texto Flash, consulteAdobe's Flash documentation。

button_text_style

Valor predeterminado:"color: #000000; font-size: 16pt;"

(Nuevo en v2.2.0)Este parámetro se combina con el parámetro button_text y permite configurar el estilo del texto en el botón Flash mediante estilos CSS. Para más detalles sobre el soporte de CSS en el texto Flash, consulteAdobe's Flash documentation

button_text_top_padding

Valor predeterminado:0

(Nuevo en v2.2.0)Establece la distancia del texto en el botón Flash desde la parte superior; se pueden usar valores negativos.

button_text_left_padding

Valor predeterminado:0

(Nuevo en v2.2.0)Establece la distancia del texto en el botón Flash desde la izquierda; se pueden usar valores negativos.

button_action

Valor predeterminado:SWFUpload.BUTTON_ACTION.SELECT_FILES (carga de múltiples archivos)

(Nuevo en v2.2.0)Establece la acción al hacer clic en el botón Flash. El valor predeterminado es SWFUpload.BUTTON_ACTION.SELECT_FILES; al hacer clic en el botón se abrirá el diálogo de carga de múltiples archivos. Si se establece como SWFUpload.BUTTON_ACTION.SELECT_FILE, será carga de un solo archivo. Si se establece como SWFUpload.BUTTON_ACTION.START_UPLOAD, se iniciará la carga de archivos.

button_disabled

Valor predeterminado:false

(Nuevo en v2.2.0)Este valor booleano establece si el botón Flash está en estado deshabilitado. Cuando está deshabilitado, hacer clic no ejecuta ninguna acción.

button_cursor

Valor predeterminado:SWFUpload.CURSOR.ARROW (cursor de flecha)

(Nuevo en v2.2.0)Este parámetro permite establecer el estado del cursor cuando el mouse pasa sobre el botón Flash. El valor predeterminado es SWFUpload.CURSOR.ARROW; si se establece como SWFUpload.CURSOR.HAND, será una mano.

button_window_mode

Valor predeterminado:SWFUpload.WINDOW_MODE.WINDOW

(Nuevo en v2.2.0)Este parámetro permite especificar en qué modo mostrará el navegador la película SWF.

custom_settings

Valor predeterminado:Objeto Object vacío

Esta propiedad acepta un dato de tipo Object y se puede usar para almacenar de forma segura información personalizada asociada a la instancia de SWFUpload, como propiedades y métodos, sin preocuparse por conflictos con los métodos y propiedades internos de SWFUpload ni por la compatibilidad en actualizaciones de versión.

Una vez configurada, se puede acceder a ella mediante la propiedad customSettings de la instancia.

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

Valor predeterminado:null

La configuración restante define una serie de funciones de devolución de llamada para el manejo de eventos. Durante el proceso de operación de SWFUpload,los eventos correspondientesserán disparados. Si necesita realizar operaciones personalizadas en estas devoluciones de llamada, debe definir las funciones de JavaScript correspondientes en la configuración.

[Nuevo] Objeto Support

La propiedad support de la instancia de SWFUpload (cuyo tipo es un objeto) permite confirmar si ciertas características de SWFUpload son compatibles con la versión de Flash Player utilizada por el navegador.

{ load : bool, // 标示SWFupload是否能在当前版本的 Flash Player中载入 imageResize : bool, // 标示当前时候安装了Flash Player 10或更新版本的Flash Player,并且SWFUpload 是否支持客户端调节上传图片的大小。 }

File Object

El objeto File contiene un conjunto de propiedades de archivo disponibles; muchos eventos de procesamiento pasan un parámetro de objeto File para acceder a las propiedades relevantes del archivo.

{ 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

Este objeto proporciona información de estado de la cola de carga; se puede obtener accediendo al método getStats de la instancia.

Este objeto incluye las siguientes propiedades:

{ in_progress : number // 值为1或0,1表示当前有文件正在上传,0表示当前没有文件正在上传 files_queued : number // 当前上传队列中存在的文件数量 successful_uploads : number // 已经上传成功(uploadSuccess触发)的文件数量 upload_errors : number // 已经上传失败的文件数量 (不包括退出上传的文件) upload_cancelled : number // 退出上传的文件数量 queue_errors : number // 入队失败(fileQueueError触发)的文件数量

Los valores de todas estas propiedades se pueden modificar mediante el método setStats, exceptoin_progressyfiles_queued。

Plug-ins de SWFUpload (SWFUpload Plug-ins)

Desde la versión v2.0 de SWFUpload se introdujeron varios complementos. Estos ayudan a SWFUpload a implementar algunas funciones.

La documentación de uso de la mayoría de los complementos se encuentra en la carpeta de complementos (plugin) de js.

SWFObject

El complemento SWFObject utilizaSWFObject librarypara insertar el componente Flash (Component) de SWFUpload en la página.

Este complemento también proporciona la función de detección de carga completa de la estructura del documento (Document Ready loading). (yukon: posiblemente esta función sea similar a $(document).ready() de jQuery) y la detección de la versión de Flash. El uso detallado se documenta en la carpeta de este complemento. Es mejor no mezclar la función de detección de carga completa del documento (Document Ready loading) de SWFObject con funciones similares de otras bibliotecas. Utilice solo una de ellas.

Flash Player 10: Debido a que Flash Player 10 requiere un botón para activar las operaciones relacionadas con la película, si este botón (su id se puede indicar mediante la propiedad button_placeholder_id del objeto de configuración) se establece como hidden o display:none mediante CSS u otros medios, SWFUpload fallará al cargar.

Cookies

Para solucionar el error de las cookies de Flash, el complemento Cookies obtiene automáticamente las cookies de su navegador y las envía con la carga. Las cookies se enviarán junto con la URL de carga en forma de POST o GET.

Este complemento envía los pares clave/valor de las cookies mediante POST o GET. En el servidor no se analizarán como cookies. Algunos frameworks que detectan automáticamente cookies para confirmar sesión y autorización de identidad puede que no obtengan los valores transmitidos por este complemento.

Queue Handling

El plugin Queue Handling proporciona funciones de manejo de colas. Por ejemplo, la carga de toda la cola, la cancelación de toda la cola y el inicio automático de la carga después de poner en cola.

Speed

El plugin speed amplía varias propiedades del objeto 'file' para describir el estado actual de la carga. Este plugin incluye valores como la velocidad actual (current speed), la velocidad media (average speed), el tiempo transcurrido (elapsed time), el tiempo restante estimado (remaining time), etc.

Problemas conocidos (Known Issues)

Flash Player y los errores de muchos navegadores afectan a SWFUpload. Pero seguimos trabajando duro.

Cancelación en Linux (Cancelling in Linux)

Con Flash Player 9 y versiones anteriores, ejecutar la función de cancelar la carga en el sistema operativo Linux puede provocar que el navegador se bloquee. Sin embargo, las versiones más recientes de Flash Player han mejorado este problema.

Progreso de carga en Linux (Upload Progress in Linux)

Flash Player en Linux solo envía un evento de progreso de carga (uploadProgress) después de que la carga se completa, en lugar de enviarlo continuamente durante el proceso de carga como en Windows.

Esto se debe a que algunas distribuciones de Linux bloquean todo el navegador durante el proceso de carga.

Progreso de carga en Mac (Upload Progress in OS X)

Hemos recibido algunos informes de que Flash Player en el sistema operativo Mac no puede activar el evento uploadProgress. Los detalles aún deben investigarse, pero tenga en cuenta su posible problema.

MIME Type

Independientemente del formato MIME real del archivo, Flash Player usa el formato mimeapplication/octet-streampara subir todos los archivos.

Número máximo de archivos seleccionables (Maximum number of selected files)

Flash Player no limita el número máximo de archivos que se pueden seleccionar para subir, pero limita la longitud total de los nombres de archivo. Esta cadena se compone así: "nombre de archivo" espacio "nombre de archivo"... El número de archivos que se pueden subir depende de la limitación del sistema operativo sobre la longitud total del nombre de archivo. Si el usuario selecciona demasiados archivos, recibirá un mensaje de advertencia de Flash Player, que se mostrará en el cuadro de diálogo de selección de archivos (yukon: en XP subí 173 archivos de una vez y no hubo advertencia...)

Proxy (Proxies)

Flash Player puede no utilizar correctamente el proxy. Tiene algunos problemas al manejar la autenticación del proxy, lo que puede causar ciertos conflictos.

Algunos programas antivirus utilizan un proxy de cliente local para recibir los archivos subidos y escanearlos (parece que interceptan el archivo subido y lo escriben en un servidor proxy; solo después de escanearlo lo envían realmente al servidor de destino). Esto hace que SWFUpload crea erróneamente que todo el archivo se ha subido, y emitirá una gran cantidad de eventos uploadProgress hasta llegar al 100%. Mientras el proxy realmente sube el archivo al servidor de destino, SWFUpload parece estar pausado.

Kaspersky antivirus: Kaspersky(y otros antivirus) implementan un proxy de cliente para interceptar los datos de carga salientes locales. SWFUpload no puede detectar la existencia de este sistema proxy. Estos servidores proxy pueden recibir los archivos subidos muy rápidamente, escanearlos y luego enviarlos al servidor de destino.

Módulo de seguridad Apache mod_security

El módulo de seguridad de Apache, mod_security, valida los mensajes POST que recibe el servidor. Flash Player implementa un caso límite (an edge case, ¿se traduce como 'forma astuta'?) (hay un parámetro que decide si validar) para subir archivos por POST, y el servidor también lo implementa.

Capa de sockets seguros (SSL)

Hemos recibido algunos informes de que Flash Player no puede subir a través de SSL. Los detalles de este problema aún no se han confirmado, pero parece que la carga bajo SSL no es fiable. Especialmente cuando se utilizan certificados autofirmados de clave pública (self-signed certificates) aparecen problemas.

Asimismo, los certificados SSL emitidos por una autoridad de certificación (CA) no confiable no pueden ser aceptados por Flash. Porque Flash no proporciona un método para aceptar dichos certificados. Como en el error de cookies mencionado anteriormente, Flash Player en Windows solo acepta certificados emitidos por CA de su lista de confianza, independientemente del certificado que esté utilizando el navegador.

Autenticación (Authentication)

El mecanismo de autenticación HTTP no es bien compatible con Flash Player. Las versiones más recientes de Flash Player son algo mejores, pero las versiones antiguas pueden provocar que el navegador se bloquee.

Conexiones terminadas prematuramente (Prematurely terminated connections)

Terminar prematuramente la respuesta (por ejemplo, el método Response.end() en ASP.NET) hará que, aunque la carga se haya completado, SWFUpload informe de un error de carga.

Nombre POST del archivo (Filedata POST name in Linux)

Cambiar el nombre de recepción del archivo (por defecto "Filedata", propiedad file_post_name en el objeto de configuración) no funciona en Flash Player de Linux.

Cookie bug

En Windows, en navegadores que no son IE (FireFox, Opera, Safari, etc.), el plugin de Flash enviará las cookies de IE. Esto rompe los mecanismos de sesión y autenticación de muchos servidores.

Los desarrolladores deben resolver manualmente el problema de transmitir la información de sesión y las cookies de autenticación, y también deben modificar manualmente la sesión en el servidor si quieren usar sesiones.

Sin embargo, el paquete de SWFUpload proporciona un código de ejemplo en PHP o ASP.Net para resolver este error.

Errores de la clase ExternalInterface (ExternalInterface bugs)

Cuando interactúa con el navegador/JavaScript, Flash Player no puede codificar correctamente los datos usando el método escape. SWFUpload ha hecho un gran esfuerzo para resolver este problema. Si este error se corrige en el futuro, SWFUpload enviará además datos codificados con escape.

Error de datos de servidor demasiado largos (Server Data length bugs)

Los datos de respuesta demasiado largos del servidor causan errores en Flash Player en sistemas Mac o Linux. Los datos pueden cortarse, alterarse o duplicarse en parte. Recomendamos que los datos que envía el servidor sean lo más breves y concisos posible.

Avant Browser

Una vez que se ha almacenado en caché, SWFUpload no funciona correctamente en el navegador Avant.

Desde la versión 2.2.0 de SWFUpload se añadió la configuración prevent_swf_caching para intentar resolver este problema.

Cuadro de diálogo de selección de archivos y cambio de página (File Dialog & Page Changing)

Salir o actualizar la página mientras aparece el cuadro de diálogo de selección de archivos provocará que el navegador se bloquee. (En todos los navegadores y sistemas operativos)

Esta situación ocurre sobre todo cuando se define un enlace <a> cuyo "onclick" llama a selectFile/selectFiles, pero no se desactiva la acción de navegación predeterminada. Al hacer clic en el enlace, se salta a otra página y al mismo tiempo se abre el cuadro de diálogo de selección de archivos.

(yukon: otra posibilidad: el programa fuerza la actualización o redirección de la página. Por ejemplo, refresh en la etiqueta <meta> de HTML, Response.Redirect() en ASP.NET, header() en PHP, etc.)

Scripts de carga con ejecución demasiado larga (Long Running Upload Scripts)

Después de que Flash sube archivos al servidor web, se ejecuta el programa receptor de la carga. El programa receptor decide si almacenarlos, crear miniaturas, escanear virus, etc. Si el programa receptor no devuelve ningún dato en 30 segundos, Flash cortará la conexión y devolverá un error de E/S.

Si no quieres que esto ocurra, durante el proceso haz que el servidor devuelva algunos caracteres o datos (si puedes).

Por ejemplo, en PHP, aunque el script PHP puede continuar completando la operación con éxito después de que Flash se desconecte, Flash no recibirá ningún dato de retorno después de la desconexión.

Modo de ventana WMODE / BUTTON_WINDOW_MODE

En algunos navegadores, si el control flash no está dentro del área visible de la pantalla, el WMODE configurado (establecido por BUTTON_WINDOW_MODE) impedirá la carga del control flash. Solo cuando se mueve la barra de desplazamiento para que el control flash entre en el área visible, se cargará y se mostrará.

(yukon: esto se hace para que la página se muestre lo antes posible. Por ejemplo, si abres una carpeta llena de imágenes, ajustas la vista a miniaturas y deslizas hacia abajo rápidamente, verás que los archivos de imagen inferiores van mostrando su contenido gradualmente.)

Esta característica puede tener efectos negativos en el plugin SWFObject. Los eventos de SWFUpload pueden no activarse, y la imagen de fondo del botón puede no cargarse hasta que el control se haya renderizado por completo.

En algunos sistemas operativos (Linux), cuando WMODE se establece en transparente, el cuadro de diálogo de selección de archivos abierto por Flash aparecerá detrás de la ventana del navegador.

Fugas de memoria (Memory Leaks)

Algunos navegadores (especialmente IE) no pueden recuperar memoria después de que Flash Player use la clase ExternalInterface para interactuar con JS (por ejemplo, SWFUpload). Generar demasiadas instancias de SWFUpload y actualizar la página varias veces provocará que el navegador consuma demasiada memoria, lo que a su vez provocará que el navegador se bloquee u otros errores del sistema.

En SWFUpload versión 2.2.0, implementamos algunos mecanismos para prevenir fugas de memoria. Sin embargo, se recomienda llamar al método destroy() al cerrar la página. Si usa cientos de instancias de SWFUpload en una página, debe probar cuidadosamente para evitar fugas de memoria.

Algunos problemas relacionados con el sistema operativo Mac (Other Mac Issues)

  • Es posible que los datos devueltos por el servidor o Flash Player en sistemas Mac no activen el evento uploadSuccess. Hemos añadido una configuración assume_success_timeout para ayudar a resolver este problema. Pero en general, devolver un campo breve después de una recepción exitosa es muy fácil y confiable.
  • Algunos usuarios informan que hay problemas al cargar archivos a direcciones que contienen subdominios en sistemas Mac.
  • Algunos usuarios informan que las redirecciones (código de estado HTTP 302) no son manejadas correctamente por Mac Flash Player. En Windows parece que no hay este problema. Las redirecciones 302 se usan a menudo en algunos modos de autenticación y marcos de diseño MVC.
  • La documentación de desarrollo de Flash indica que en sistemas anteriores a OS X 10.3, bytes loaded siempre será -1. SWFUpload lo cambia a 0, pero total bytes no se enviará, y el progreso nunca llegará al 100%. Por lo tanto, configure la actualización de la interfaz de usuario para que muestre el 100% cuando se emitan los eventos uploadSuccess o uploadComplete al finalizar la carga. De esta manera, la interfaz de usuario será consistente en todos los sistemas.
  • Algunos usuarios informan que Mac Flash Player tendrá problemas cuando la ruta de carga contenga caracteres de espacio. Por favor, reemplácelos con + o %20.
  • Algunos usuarios informan que Mac Flash Player agregará el número de puerto en el encabezado HTTP HOST (por ejemplo, http://www.example.com:80). Si verifica este parámetro, tenga cuidado con este problema.
  • Si un archivo contiene solo una bifurcación de recursos (resource fork), será tratado por Flash Player como un archivo de 0 bytes y no se podrá cargar (Nota: Flash Player 10.1 puede haber resuelto este problema).