Руководство по использованию SWFUpload см. по ссылке:https://www.example.com/w3cnote/swfupload-guide.html

Содержание

  1. SWFUpload
  2. SWFUpload версии 2
  3. Обзор)
  4. Начало работы)
  5. Объект JavaScript SWFUpload)
    1. Конструктор
    2. Глобальные переменные и константы)
      1. Новое: экземпляры
      2. Новое: movieCount
      3. Новое: QUEUE_ERROR
      4. Новое: UPLOAD_ERROR
      5. Новое: FILE_STATUS
      6. Новое: UPLOAD_TYPE
      7. Новое: BUTTON_ACTION
      8. Новое: CURSOR
      9. Новое: BUTTON_WINDOW_MODE
      10. Новое: RESIZE_ENCODING
      11. Новое: onload
    3. Свойства
      1. Новое: customSettings
      2. movieName
    4. Методы
      1. addSettingУстарело
      2. getSettingУстарело
      3. retrieveSettingУдалено (в v2.1.0)
      4. destroyДобавлено в v2.1.0
      5. displayDebugInfo
      6. selectFile
      7. selectFiles
      8. startUpload
      9. Новое: startResizedUpload (добавлено в v2.5.0)
      10. cancelUpload
      11. stopUpload
      12. Новое: requeueUpload
      13. getStats
      14. setStats
      15. getFile
      16. Новое: getQueueFile (добавлено в 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 (добавлено в v2.2.0)
      31. setButtonDimensions (добавлено в v2.2.0)
      32. setButtonText (добавлено в v2.2.0)
      33. setButtonTextStyle (добавлено в v2.2.0)
      34. setButtonTextPadding (добавлено в v2.2.0)
      35. setButtonDisabled (добавлено в v2.2.0)
      36. setButtonAction (добавлено в v2.2.0)
      37. setButtonCursor (добавлено в v2.2.0)
    5. Новое: События
      1. flashReady
      2. Новое: swfUploadPreload
      3. Новое: swfUploadLoadFailed
      4. Новое: swfUploadLoaded
      5. Новое:buttonAction
      6. fileDialogStart
      7. fileQueued
      8. Новое: fileQueueError
      9. fileDialogComplete
      10. Новое:uploadResizeStart
      11. uploadStart
      12. uploadProgress
      13. uploadError
      14. Новое:uploadSuccess
      15. uploadComplete
      16. debug
    6. Вспомогательные объекты SWFUpload
      1. Объект настроек
      2. Описание настроек
      3. Новое: объект поддержки
      4. Объект File
      5. Объект статистики
  6. Плагины SWFUpload
  7. Новое: Известные проблемы

SWFUpload

SWFUploadИзначальноVinterwebb.seКлиентский инструмент загрузки файлов, разработанный. Он объединяет JavaScript и Flash, чтобы обеспечить в браузере возможность (и хороший пользовательский опыт), превосходящую традиционный тег загрузки <input type="file" />.

Основные возможности SWFUpload:

  • В диалоговом окне выбора файлов можно выбрать несколько файлов.
  • Загрузка в стиле AJAX без обновления страницы.
  • Различные события в процессе загрузки.
  • Можно изменять размер изображений на стороне клиента.
  • Используемое им пространство имён классов совместимо с различными JS-библиотеками (т. е. jQuery, Prototype и т. д.).
  • Поддерживает Flash 9 и Flash 10 (поддержка Flash 8 была прекращена после версии 2.2.0).

Философия проектирования SWFUpload отличается от других инструментов загрузки на основе Flash. SWFUpload предоставляет разработчикам максимально возможный контроль над пользовательским интерфейсом. Разработчики могут использовать XHTML, CSS и JavaScript, чтобы он лучше соответствовал стилю их сайта. Он предоставляет набор простых JS-событий для обновления статуса загрузки, и разработчики могут использовать эти события для отображения прогресса загрузки файлов на веб-странице.

К сожалению, Flash Player 10 вынуждает нас использовать кнопку (после нажатия на неё) для вызова диалогового окна выбора файлов, но SWFUpload позволяет разработчикам использовать JS для изменения текста и внешнего вида кнопки.

SWFUpload v2

SWFUpload v2 включает множество новых возможностей, повышенную стабильность, исправляет некоторые ошибки в Flash Player и предоставляет несколько полезных плагинов. К новым возможностям относятся:

  • Может использовать функции безопасности Flash Player 10.
  • Может отправлять дополнительные POST-данные вместе с загрузками.
  • Отправляет POST-данные для каждой загрузки файла.
  • Полный набор событий.
  • Все настройки и параметры можно гибко конфигурировать.
  • Может получать данные, возвращённые сервером.
  • Может приостанавливать загружаемые файлы вместо отмены.
  • Может произвольно изменять порядок загрузки.
  • Может предоставлять диалог выбора одного или нескольких файлов.
  • Может ограничивать длину очереди загрузки, размер файла и количество загружаемых файлов.
  • Может лучше обрабатывать файлы размером 0 байт.
  • Каждый файл имеет событие подтверждения загрузки.

Обзор

HTML-загрузка

Стандартное поле загрузки HTML предоставляет пользователю только кнопку и текстовое поле для выбора одного файла. Затем оно отправляется через форму. Приходится ждать завершения загрузки всего файла, прежде чем можно будет подтвердить и проверить размер и расширение файла, а во время процесса загрузки почти нет обратной связи. Это вызывает некоторые неудобства.

Но традиционная загрузка через HTML очень проста, состоит из одного шага и поддерживается всеми браузерами.

SWFUpload

SWFUpload использует Flash-ролик для выбора и загрузки файлов. У ролика есть настраиваемая кнопка для вызова диалога выбора файлов. Диалог выбора файлов позволяет пользователям выбрать один файл или несколько файлов. Также можно ограничить типы файлов, доступных для выбора; разработчики могут разрешить пользователям выбирать только указанные подходящие файлы, например *.jgp;*.gif.

После выбора файлов и нажатия OK каждый файл проверяется и помещается в очередь. Когда Flash загружает файлы, запускаются предопределённые события JavaScript, чтобы обновлять отображение интерфейса на странице, а также в реальном времени предоставлять состояние загрузки и информацию об ошибках.

Загрузка файлов не зависит от страницы и формы. Каждый файл загружается отдельно на страницу обработки, что упрощает серверу работу с файлами. Служба загрузки, предоставляемая Flash, означает, что всю страницу не нужно отправлять или обновлять. Это немного похоже на AJAX-приложение. Данные формы на странице обрабатываются отдельно от загрузки файлов, управляемой Flash.

Начало работы

SWFUpload не является элементом управления загрузкой с поддержкой перетаскивания. Поэтому требуются некоторые знания DOM и JS. Несколько демонстраций покажут возможности SWFUpload и то, как использовать их для выполнения задач.

SWFUpload состоит из 4 частей:

  1. Инициализация и настройки (JavaScript)
  2. Библиотека JavaScript: SWFUpload.js
  3. Элемент управления Flash: swfupload.swf и swfupload_fp9.swf
  4. Механизм обработки событий (JavaScript)

Многие проблемы при использовании SWFUpload возникают из-за настройки. Неправильная обработка событий, ошибки Flash/браузера или конфигурация сервера.

Инициализация и настройки

SWFUpload должен быть инициализирован на странице. Обычно это делается в событии window.onload в JS. Конструктор SWFUpload должен получить объект типа Object (JS). Данные этого объекта передаются непосредственно в конструктор.

Ссылку на инициализированный объект SWFUpload следует хорошо сохранить (то есть сохранить её в переменной, например 'swfu' в примере), потому что эта ссылка также нужна при запуске загрузки файлов и управлении другими возможностями.

Пример:При инициализации SWFUpload передайте анонимный объект напрямую для настройки параметров.

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" //文件大小限制 }); };

Пример:Вы также можете использовать объектную переменную (settings_object) для передачи параметров конфигурации при инициализации 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); };

Библиотека JavaScript

Чтобы использовать SWFUpload, необходимо подключить файл JS-библиотеки (swfupload.js) на странице, которая его использует.

После создания объекта SWFUpload становится доступно множество функций. Разработчики могут использовать это для управления SWFUpload.

Пример:Как подключить библиотеку swfupload.js

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

Пример:Инициализация 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中创建一个"选择"按钮 });

[Новое содержимое] Элемент управления Flash

Библиотека SWFUpload JavaScript может динамически загружать элемент управления Flash (swfupload.swf или swfupload_fp9.swf).

Адрес файла элемента управления Flash должен быть определён в объекте настроек SWFUpload при инициализации.

Элемент управления Flash на самом деле представляет собой небольшой Flash-ролик, который может управлять выбором файлов, проверкой и загрузкой.

На странице он представляет пользователю кнопку с настраиваемым интерфейсом, и он может определять версию Flash Player (9, 10) и автоматически загружать элемент управления Flash, подходящий для версии проигрывателя пользователя.

Используйте flash_url и flash9_url для указания путей к swfupload.swf или swfupload_fp9.swf. (yukon: В предыдущих примерах это уже упоминалось.)

Обработчики событий

Разработчики должны создать набор функций JavaScript для обработки событий SWFUpload. Эти функции вызываются при возникновении различных важных событий.

Обрабатывая события SWFUpload, разработчики могут предоставлять обратную связь о ходе загрузки, сообщениях об ошибках и завершении загрузки. Примечание: Разработчикам не следует переопределять функции, хранящиеся в SWFUpload.prototype.

Пример:Обработка событий SWFUpload и инициализация.

// uploadStart event handler function. The value of the "upload_start_handler" property in the settings object should be the name of this function. 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; }; // uploadSuccess event handler function. The value of the "upload_success_handler" property in the settings object should be the name of this function. 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

Объект JavaScript SWFUpload

Конструктор

SWFUpload(объект настроек) //SWFUpload(settings object)

Возвращает:Экземпляр SWFUpload

var swfupload_instance = new SWFUpload(settings_object);

Глобальные переменные и константы

SWFUpload определяет некоторые глобальные переменные и константы, которые полезны для продвинутых приложений SWFUpload и обработки ошибок. Все они доступны только для чтения.

[Новый контент] SWFUpload.instances

SWFUpload.instances — это объект-массив, который хранит ссылки на все экземпляры SWFUpload на странице. Flash Player полагается на этот массив объектов для вызова правильных функций обработчиков событий. Индексом массива объектов SWFUpload.instances (SWFUpload.instances[index]) является свойство movieName.

SWFUpload.movieCount

SWFUpload.movieCount — это глобальная переменная, которая записывает, сколько экземпляров объектов SWFUpload было создано на странице, и гарантирует, что каждому Flash-ролику присваивается уникальное имя movieName.

[Новый контент] SWFUpload.QUEUE_ERROR

SWFUpload.QUEUE_ERROR — это простой объект JavaScript, содержащий константы для кодов ошибок очереди. Он используется для определения того, какой код ошибки отправляется, когда возникает ошибка очереди файлов (fileQueueError).

SWFUpload.QUEUE_ERROR = { QUEUE_LIMIT_EXCEEDED : -100, FILE_EXCEEDS_SIZE_LIMIT : -110, ZERO_BYTE_FILE : -120, INVALID_FILETYPE : -130 };
  • QUEUE_LIMIT_EXCEEDED — указывает, что пользователь поставил в очередь слишком много файлов, превысив максимальную длину очереди. Однако как только файлы в очереди будут загружены или удалены, пользователь всё ещё может добавлять файлы в очередь загрузки.
  • FILE_EXCEEDS_SIZE_LIMIT — указывает, что файл превышает установленный лимит размера файла (file_size_limit).
  • ZERO_BYTE_FILE — указывает, что выбранный файл имеет размер 0 байт. Flash Player не может обрабатывать пустые файлы. Загрузка значков ярлыков Windows также может вызвать эту ошибку.
  • INVALID_FILETYPE — указывает, что расширение выбранного файла не соответствует разрешённым типам. Эта ошибка может возникнуть, когда пользователь вручную вводит имя файла с неправильным расширением, а не выбирает файл щелчком мыши.

[Новый контент] SWFUpload.UPLOAD_ERROR

SWFUpload.UPLOAD_ERROR — это также простой объект JavaScript, содержащий константы кодов ошибок загрузки. Он используется для определения того, какой код ошибки отправляется при возникновении события ошибки загрузки (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 — была предпринята попытка загрузки на сервер, но сервер не вернул код состояния 200 (200 означает отсутствие ошибок).
  • MISSING_UPLOAD_URL — URL загрузки (upload_url) не задан.
  • IO_ERROR — произошла ошибка при чтении и отправке файла. Обычно это происходит, когда сервер неожиданно закрывает соединение.
  • SECURITY_ERROR — ошибка безопасности; загрузка нарушила ограничения безопасности. Это происходит редко.
  • UPLOAD_LIMIT_EXCEEDED — пользователь попытался загрузить больше файлов, чем установленный лимит.
  • UPLOAD_FAILED — произошла ошибка при попытке инициализировать загрузку. Это происходит редко.
  • SPECIFIED_FILE_ID_NOT_FOUND — файл начал загружаться, но файл не удалось найти. (yukon: после того как файл был выбран и добавлен в очередь, пользователь переименовал или удалил файл на диске и т. д.)
  • FILE_VALIDATION_FAILED — при запуске загрузки была возвращена ошибка.
  • FILE_CANCELLED — загрузка была отменена (была вызвана функция cancelUpload).
  • UPLOAD_STOPPED — загрузка была приостановлена (была вызвана функция stopUpload).
  • RESIZE_ERROR — произошла ошибка при изменении размера изображения.

[Новый контент] SWFUpload.FILE_STATUS

SWFUpload.FILE_STATUS — это объект JavaScript, содержащий константы кодов состояния файла. Он используется для проверки свойства состояния файла объекта File.

SWFUpload.FILE_STATUS = { QUEUED : -1, IN_PROGRESS : -2, ERROR : -3, SUCCESS : -4, CANCELLED : -5 };
  • QUEUED — указывает, что файл ожидает в очереди загрузки.
  • IN_PROGRESS — указывает, что файл в данный момент загружается.
  • ERROR — указывает, что файл вызвал ошибку очереди или загрузки.
  • COMPLETE — указывает, что файл был успешно передан на сервер.
  • CANCELLED — указывает, что загрузка этого файла была отменена (была вызвана функция cancelUpload).

[Новый контент] SWFUpload.UPLOAD_TYPE [Назначение: определяет тип загрузки]

SWFUpload.UPLOAD_TYPE — это объект JavaScript, содержащий константы типа загрузки. Он используется для проверки свойства типа загрузки объекта File.

  • NORMAL — обычная загрузка SWFUpload.
  • RESIZED — загрузка изображения с изменённым размером, данные отправляются через HTTP POST.

[Новый контент] SWFUpload.BUTTON_ACTION [Назначение: определяет действие, выполняемое при нажатии кнопки]

SWFUpload.BUTTON_ACTION — это объект JavaScript, содержащий константы кода действия кнопки. Он используется для установки значения button_action, тем самым настраивая реакцию интерактивной кнопки во Flash-ролике на различные действия мыши.

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

  • SELECT_FILE — при нажатии кнопки открывается диалог выбора одного файла. Определяемое в JavaScript событие щелчка мышью не запускается.
  • SELECT_FILES — при нажатии кнопки открывается диалог выбора нескольких файлов. Определяемое в JavaScript событие щелчка мышью не запускается.
  • START_UPLOAD — при нажатии кнопки будет загружен первый файл в очереди загрузки. Определяемое в JavaScript событие щелчка мышью не запускается.
  • NONE — в этом случае запускается определяемое в JavaScript событие щелчка мышью.
  • JAVASCRIPT — то же, что и NONE. Это значение устарело.

[Новое содержимое] SWFUpload.CURSOR [Назначение: изменение стиля курсора мыши]

SWFUpload.CURSOR — это объект JavaScript, содержащий константы курсора кнопки. Он используется для установки значения button_cursor, тем самым изменяя стиль курсора мыши, когда указатель находится над кнопкой.

SWFUpload.CURSOR = { ARROW : -1, HAND : -2 }
  • ARROW — курсор отображается как стрелка-указатель.
  • HAND — курсор отображается как рука.

[Новое содержимое] SWFUpload.WINDOW_MODE [Назначение: режим отображения ролика]

SWFUpload.WINDOW_MODE — это объект-массив JS, содержащий константы параметра wmode для ролика кнопки. Он используется, чтобы сообщить браузеру, как отображать Flash-ролик.

Некоторые настройки WINDOW_MODE/WMODE могут вызывать проблемы в браузере; подробности см. ниже.Известные проблемы.

SWFUpload.WINDOW_MODE = { WINDOW : "window", TRANSPARENT : "transparent", OPAQUE : "opaque" };
  • WINDOW — режим по умолчанию. Flash-ролик отображается на самом верхнем слое страницы.
  • OPAQUE позволяет другим элементам страницы перекрывать этот ролик-кнопку.
  • TRANSPARENT. Фон кнопки прозрачен, что позволяет отображать HTML-элементы под ней.

[Новое] SWFUpload.RESIZE_ENCODING [Назначение: указывает формат кодирования изображения]

SWFUpload.RESIZE_ENCODING — это JS-массив, содержащий константы типов кодирования при изменении размера. Он используется для указания формата кодирования изображения после изменения размера.

  • JPEG — формат кодирования JPEG
  • PNG — формат кодирования PNG

[Новое] SWFUpload.onload [Назначение: определяет функцию, выполняемую после загрузки страницы]

onload — это функция, которую можно выполнить через метод addDOMLoadEvent объекта swfobject. Вы можете использовать этот метод, чтобы выполнить ваш скрипт после загрузки страницы. Однако следует убедиться, что вы не используете другие подобные методы (такие как "Ready" в jQuery или dom:loaded в Prototype).

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

Приведённый выше пример инициализирует SWFUpload при самом раннем событии загрузки браузера. Большинство событий готовности DOM выполняются сразу после события window.onload.

Свойства

Пожалуйста, следуйте приведённым ниже описаниям списка свойств при использовании этих свойств. Если свойство, доступное только для чтения или только для записи, используется неправильно, это приведёт к ошибкам SWFUpload.

[Новое содержимое] customSettings (чтение/запись) [Назначение: пользовательские настройки разработчика]

Свойство customSettings — это пустой JS-объект. Оно используется для хранения данных, связанных с экземпляром SWFUpload. Его содержимое можно инициализировать с помощью свойства custom_settings в объекте settings.

Пример:

// 初始化 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" };

Значения, хранящиеся в объекте customSettings, могут быть легко доступны обработчикам событий: (yukon: это свойство использует динамические возможности JS, чтобы дать разработчикам высокую степень свободы)

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

movieName (только для чтения) [Назначение: хранит уникальный идентификатор экземпляра SWFUpload]

Содержит уникальное имя идентификатора для экземпляра SWFUpload. Это значение можно передать во Flash для помощи во взаимодействии AS-JS. Оно используется для индексации экземпляра в массиве SWFUpload.instances. Вы не должны и не можете его изменять.

Методы

Следующие методы используются для работы с SWFUpload. Некоторые методы могут быть привязаны к событиям клика элементов DOM, а другие используются внутри SWFUpload при обработке событий.

object addSetting(setting_name, value, default_value)

Устарело Функция addSetting задаёт значение настройки. Если значение не определено, используется default_value. Функция используется SWFUpload

addSetting возвращает значение, которое было сохранено в настройке.

object getSetting(setting_name)

Устарело Функция getSetting извлекает значение настройки. Если настройка не найдена, возвращается пустая строка.

object retrieveSetting(setting_value, default_value)

Удалено в v2.1.0. Функция retrieveSetting похожа на функцию addSetting, за исключением того, что она не изменяет внутренний объект settings. retrieveSetting возвращает setting_value, если оно не undefined, в противном случае возвращает default_value.bool destroy() [Назначение: уничтожает экземпляр SWFUpload]

Это служебная функция.

Добавлено в v2.1.0

Удаляет DOM-элемент SWF и уничтожает внутренние ссылки SWFUpload. Используется для полного удаления экземпляра SWFUpload со страницы, предотвращая проблемы утечки памяти в IE.

Возвращает true при успешном удалении; возвращает false, если произошла ошибка, оставляющая экземпляр SWFUpload в несогласованном состоянии.

void displayDebugInfo() [Назначение: выводит отладочную информацию]

В событиях отладки displayDebugInfo() выводит настройки SWFUpload. Если параметр debug установлен в true во время инициализации, эта функция вызывается автоматически.

Не рекомендуется. Несовместимо с Flash Player 10.

void selectFile()

Не рекомендуется. Несовместимо с Flash Player 10.

selectFile заставляет Flash Control отображать окно диалога выбора файла. Из окна диалога может быть выбран один файл.

Вызов selectFile запускает цепочку файловых событий.

void selectFiles()

Не рекомендуется. Несовместимо с Flash Player 10.

selectFiles заставляет Flash Control отображать окно диалога выбора файлов. В окне диалога можно выбрать несколько файлов.

Вызов selectFiles запускает цепочку событий файла.

void startUpload(file_id) [Назначение: запускает загрузку файлов]

startUpload принимает параметр file_id для загрузки файла. Если ему не передано значение file_id, по умолчанию будет загружен первый файл в очереди загрузки.

Вызов startUpload запускает цепочку событий загрузки.

[Новое] void startResizedUpload(file_id, width, height, encoding, quality, allowEnlarging) [Назначение: загрузка с изменением размера изображения]

startResizedUpload принимает параметр file_id для загрузки файла. SWFUpload пытается настроить ширину/высоту файла и другие параметры (если формат изображения поддерживается Flash). Если формат изображения не поддерживается, генерируется uploadError.

Параметры width и height используются для установки максимальной ширины и высоты изображения. Однако при изменении размера сохраняется соотношение сторон.

Значение encoding должно быть константой в SWFUpload.RESIZE_ENCODING.

quality можно использовать только для настройки качества изображений формата JPEG. Он принимает диапазон 0-100. Если значение выходит за пределы этого диапазона, оно принудительно устанавливается в 0 или 100.

Параметр allowEnlarging определяет, разрешает ли SWFUpload увеличивать исходное изображение (по умолчанию true), когда ширина/высота исходного изображения меньше указанной ширины и высоты. Если установлено значение false, изображение всё равно будет закодировано, но не будет увеличено.

Вызов метода startResizedUpload запускает обычную цепочку событий загрузки. Однако Flash Player не предоставляет периодические события uploadProgress. SWFUpload отправляет только имитированные события uploadProgress 0% и 100%.

Изображение с изменённым размером отправляется через POST (а не как FILE), потому что Flash Player 10 ввёл функции безопасности.Страница обработки PHP для загрузки с изменением размера изображения отличается от обычной страницы обработки PHP загрузки:

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

void cancelUpload(file_id, trigger_error_event) [Назначение: удаляет загрузку]

cancelUpload принимает параметр file_id для удаления загрузки файла. Этот файл будет удалён из очереди загрузки.

Если file_id не указан, первый файл в очереди загрузки будет отменён по умолчанию.

Если необязательный параметр trigger_error_event установлен в false, событие uploadError не будет вызвано.

void stopUpload() [Назначение: останавливает загрузку файла]

stopUpload останавливает текущий загружаемый файл и возвращает его в очередь загрузки. (yukon: в отличие от удаления, он отменяет загрузку этого файла, но не удаляет его из очереди загрузки)

Когда вызывается stopUpload, если есть загружаемый файл, будет вызвано событие uploadError; если в данный момент нет загружаемого файла, никаких действий не произойдёт и никакое событие не будет вызвано.

[Новое] bool requeueUpload(file_id или index) [Назначение: повторная постановка в очередь]

requeueUpload добавляет ранее поставленный в очередь файл обратно в очередь ожидания загрузки.

Возвращает false, если файл не найден или в данный момент загружается.

Примечание: повторно поставленный в очередь файл не будет повторно проверяться на размер файла, размер очереди, общее количество загрузок или другие ограничения; он только добавляется в очередь, если ссылка на файл всё ещё существует.

object getStats() [Назначение: возвращает текущий объект статистики]

Возвращает объект статистики.

void setStats(stats_object) [Назначение: устанавливает или изменяет объект статистики]

Устанавливает или изменяет объект статистики. Если вы хотите изменить количество успешных загрузок или количество неудачных загрузок после завершения загрузки, можно использовать этот метод.

object getFile(file_id|index) [Назначение: получает конкретный объект файла из очереди]

getFile возвращает объект файла в очереди, принимая идентификатор файла (id объекта файла) или индекс файла (атрибут index объекта файла).

Когда в getFile передаётся file_id, можно получить только файлы из очереди; если файл не найден, возвращается null.

Когда в getFile передаётся index, можно получить все файлы, для которых была предпринята попытка постановки в очередь (включая файлы, вызвавшие ошибки при постановке в очередь). Если индекс вне диапазона, возвращается null.

[Новое] object getQueueFile(file_id|index) [Назначение: возвращает конкретный объект файла в очереди загрузки]

getQueueFile используется для возврата одного объекта файла из очереди загрузки. В частности, он возвращает объект файла в очереди, принимая идентификатор файла (id объекта файла) или индекс файла (атрибут index объекта файла). Индекс начинается с 0.

Когда в getQueueFile передается file_id, можно получить только файлы из очереди ожидающих загрузки; если файл не найден, возвращается null.

Когда в getQueueFile передается индекс, можно получить только файлы из очереди ожидающих загрузки. Например: getQueueFile(0) возвращает объект файла в начале очереди ожидающих загрузки. Если вызвана функция startUpload, он будет загружен после завершения текущей загрузки.

(yukon: Разница между двумя вышеуказанными методами может быть в следующем: getFile извлекает файлы из очереди файлов, включая очереди загруженных, с ошибками и ожидающих загрузки. getQueueFile извлекает файлы только из очереди ожидающих загрузки.)

void addPostParam(name, value) [Назначение: добавляет пару ключ/значение]

addPostParam добавляет пару ключ/значение, которая отправляется вместе через POST при загрузке каждого файла.

Она соответствует такой же паре ключ/значение в настройке post_params. Если значение уже существует в post_params, оно фактически будет перезаписано.

void removePostParam(name) [Назначение: удаляет пару ключ/значение]

removePostParam удаляет пару ключ/значение, которая ранее отправлялась вместе через POST при загрузке каждого файла.

Она соответствует такой же паре ключ/значение в настройке post_params. Если значение уже существует в post_params, оно фактически будет удалено.

bool addFileParam(file_idspan>, name, value)

Добавляет пару ключ/значение POST к конкретному объекту файла с указанным file_id. Если добавленный атрибут name уже существует, исходное значение будет перезаписано.

Если вам нужно добавить значения POST ко всем объектам файлов, можно использовать свойство post_params в настройках.

bool removeFileParam(file_id, name)

Удаляет пару значений POST, добавленную с помощью addFileParam.

Возвращает false, если это свойство не существует в настройках POST.

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 в настройках. Обратите внимание, что FlashPlayer игнорирует эту настройку в среде Linux.

void setUseQueryString(use_query_string)

Динамически изменяет use_query_string в настройках. Если установлено true, SWFUpload отправляет данные через GET; если false — через POST.

void setDebugEnabled(debug_enabled)

Динамически включает/отключает отладочный вывод; параметр debug_enabled является логическим значением.

void setButtonImageURL(url)

Динамически изменяет изображение кнопки. Параметр url — это изображение относительно swf-файла или абсолютный адрес (например: относительный путь, начинающийся с /, или абсолютный путь: http://www.swfupload.org/buttonImage.png). Можно использовать все типы изображений, поддерживаемые FLASH (gif, jpg, png).

Изображение кнопки должно быть обработано по определённым правилам (CSS Sprite). Изображение кнопки должно содержать 4 состояния кнопки, сверху вниз: normal, hover, down/click, disabled. (См. изображение в официальном демо.)

void setButtonDimensions(width, height)

Динамически изменяет размер SWF-ролика, чтобы он соответствовал размеру изображения кнопки. Значение должно быть чистым числом и не может содержать единицы длины. Высота должна быть 1/4 высоты всего изображения кнопки, чтобы обеспечить правильное отображение.

void setButtonText(text)

Динамически задаёт текст, отображаемый во Flash-кнопке, с поддержкой HTML. Стиль HTML-текста можно задать через CSS-селекторы вместе с методом setButtonTextStyle. Если текст слишком большой, переполняющая часть будет скрыта. Подробности о поддержке HTML во Flash-тексте см. ...Документация Adobe по Flash。

void setButtonTextStyle(css_style_text)

Вместе с методом setButtonText можно использовать CSS-стили для динамической установки стиля текста во Flash-кнопке. Подробности о поддержке CSS во Flash-тексте см. ...Документация Adobe по Flash

void setButtonTextPadding(left, top)

Задаёт левый и правый отступ текста Flash-кнопки. Значение может быть отрицательным.

void setButtonDisabled(isDisabled)

Если установлено значение 'true', кнопка Flash отключается, и любые действия и операции с кнопкой игнорируются.

void setButtonAction(buttonAction)

Определяет действие, выполняемое после щелчка мышью. Перечисление констант BUTTON_ACTION хранит доступные значения для этого метода.

void setButtonCursor(buttonCursor)

Задаёт стиль указателя мыши при наведении на кнопку. Перечисление констант CURSOR хранит доступные значения для этого метода.

[Новое содержимое] События

SWFUpload во время работы запускает серию событий. Разработчики могут использовать эти события обработки обратных вызовов для управления пользовательским интерфейсом, управления операциями или сообщения об ошибках.

Все события вызываются в контексте экземпляра SWFUpload, поэтому использование this в этих событиях обратного вызова позволяет напрямую обращаться к объекту экземпляра, вызвавшему событие.

Все события должны быть предварительно заданы в параметре setting при инициализации экземпляра.

[Новое:]

При загрузке файла события вызываются в следующем порядке (цепочка событий загрузки):

  • Начало загрузки с дополнительной функцией изменения размера изображения uploadResizeStart
  • Обычное начало загрузки uploadStart
  • Загрузка выполняется uploadProgress (вызывается многократно во время процесса загрузки файла)
  • Ошибка загрузки uploadError (вызывается при возникновении определённых ошибок; загрузка будет отменена или остановлена)
  • Успешная загрузка uploadSuccess (файл успешно загружен, и сервер получил пригодные для использования данные)
  • Загрузка завершена uploadComplete (загрузка завершена, SWFUpload готов начать загрузку следующего файла)

flashReady()

Эта функция события является внутренним событием и поэтому не может быть переопределена. Когда загруженный Flash-компонент завершает все операции инициализации, это событие запускается, чтобы уведомить SWFUpload о том, что он может принимать различные команды.

Примечание:Соответствует пользовательскому событию swfupload_loaded_handler в настройках.

[Новое] swfUploadPreload()

Событие swfUploadPreload запускается после того, как SWFUpload подтвердил доступные функции, но до полной загрузки Flash Movie. Если обработчик этого события возвращает false, swfupload остановит загрузку. Обычно оно используется для обработки случаев, когда браузер не поддерживает важный параметр функции.

Этот обработчик события можно задать в свойстве swfupload_preload_handler объекта settings.

[Новое] swfUploadLoadFailed()

Когда страница не может нормально загрузить Flash-ролик. Обычно это происходит потому, что Flash Player не установлен или его версия ниже 9.0.28.

Этот обработчик событий можно задать в свойстве swfupload_load_failed_handler объекта settings.

[Новое] swfUploadLoaded()

Событие swfUploadLoaded срабатывает после того, как Flash загружен и готов. Оно настраиваемое. Событие swfUploadLoaded уведомляет вас о том, что Flash загружен и все методы можно безопасно выполнять.

Этот обработчик событий можно задать в свойстве swfupload_loaded_handler объекта settings.

[Новое] mouseClick()

Событие mouseClick срабатывает только при нажатии кнопки (и когда значение настройки button_action равно SWFUpload.BUTTON_ACTION.NONE или Flash-кнопка отключена). Если значение настройки button_action другое или Flash-кнопка включена, это событие не будет вызвано.

Эту функцию обработчика событий можно задать в свойстве mouse_click_handler объекта settings.

[Новое] mouseOver()

Событие mouseOver будет вызвано, когда мышь перемещается над любой частью Flash-ролика.

Эту функцию обработчика событий можно задать в свойстве mouse_over_handler объекта settings.

[Новое] mouseOut()

Событие mouseOut запускается, когда мышь покидает Flash-ролик.

Эту функцию обработчика события можно задать в свойстве mouse_out_handler объекта settings.

fileDialogStart()

Это событие запускается после вызова selectFile или selectFiles и до отображения диалога выбора файлов. Одновременно может существовать только один диалог выбора файлов.Однако эта функция обработчика события не будет выполнена, пока диалог выбора файлов не будет закрыт.

Эту функцию обработчика события можно задать в свойстве file_dialog_start_handler объекта settings.

fileQueued(объект файла)

Когда файлы выбраны и диалог выбора файлов закрывается и исчезает, если выбранные файлы успешно добавлены в очередь загрузки, это событие будет запущено по одному разу для каждого успешно добавленного файла (N файлов успешно добавлены в очередь, событие запускается N раз).

Соответствует пользовательскому событию file_queued_handler в settings.

[Новое содержимое]fileQueueError(объект файла, код ошибки, сообщение)

 

Когда диалог выбора файлов закрывается, если выбранные файлы не удалось добавить в очередь загрузки, это событие будет запущено один раз для каждого файла, при добавлении которого возникла ошибка (это событие и событие fileQueued являются взаимоисключающими; при добавлении файла в очередь возможны только два исхода: успех или неудача).

Возможные причины ошибок при постановке файлов в очередь: 1. Превышен предел размера загрузки, 2. Файл имеет нулевой размер, 3. Превышен предел количества файлов в очереди, 4. Недопустимый тип файла вне разрешённых типов.

(yukon: после тестирования содержимое message следующее:

1. Превышен лимит размера загрузки: message=Размер файла превышает допустимый лимит.

2. Файл имеет нулевой размер: message=Файл имеет нулевой размер и не может быть загружен.

3. Превышен лимит количества файлов в очереди: message=int (имеется в виду установленный вами лимит размера очереди).

4. Недопустимый тип файла, не входящий в разрешённые типы: message=Файл не относится к разрешённым типам.

Если вы хотите изменить эти сообщения, измените их в swfupload.as в пакете с открытым исходным кодом, затем перекомпилируйте в swfupload.swf.

)

Конкретную причину ошибки можно получить из параметра error code. Тип кода ошибки можно увидеть в определениях в SWFUpload.QUEUE_ERROR.

Напоминание:Соответствует пользовательскому событию file_queue_error_handler в настройках.

Примечание:Если количество выбранных для очереди файлов превышает лимит количества в настройках, то ни один файл не будет поставлен в очередь, и это событие срабатывает только один раз. Если лимит количества не превышен, каждый файл проверяется на тип и размер; для файлов, не прошедших проверку, это событие срабатывает, а файлы, прошедшие проверку, успешно ставятся в очередь.

fileDialogComplete(количество выбранных файлов, количество файлов, поставленных в очередь, общее количество файлов в очереди)

Когда диалог выбора файлов закрывается и все выбранные файлы обработаны (успешно добавлены в очередь загрузки или завершились ошибкой), срабатывает это событие. количество выбранных файлов — это число выбранных файлов, количество файлов, поставленных в очередь, — количество файлов из этого выбора, которые были успешно добавлены в очередь.

Напоминание:Соответствует пользовательскому событию file_dialog_complete_handler в настройках.

Примечание:Если вы хотите, чтобы файлы загружались автоматически после выбора, вызов this.startUpload() в этом событии — хороший выбор. Если нужна более строгая проверка, можно проверить количество файлов в очереди перед вызовом загрузки; если оно больше 0, можно начинать загрузку.

[Новое] uploadResizeStart(объект файла, ширина, высота, кодирование, качество)

Функция-обработчик события uploadResizeStart вызывается, когда изображение начинает изменять размер. Во время процесса изменения размера события прогресса или методы обработки не предоставляются. Однако повторное кодирование изображения может занять некоторое время. Если в этот период возникает ошибка, будет вызвано событие uploadError.

Когда изменение размера завершено, SWFUpload продолжает вызывать событие uploadStart и запускает ту же цепочку событий, что и при обычной загрузке.

uploadStart(объект файла)

Событие uploadStart вызывается перед началом загрузки файла на сервер. Эта функция-обработчик события может выполнить финальную проверку перед загрузкой и другие необходимые операции, такие как добавление, изменение или удаление POST-данных.

После выполнения финальных операций, если функция возвращает false, загрузка не будет начата; если она возвращает true или ничего не возвращает, загрузка официально начнется.

Напоминание:Соответствует пользовательскому событию upload_start_handler в настройках.

uploadProgress(объект файла, загружено байт, всего байт)

Событие uploadProgress периодически вызывается элементом управления Flash.Оно предоставляет три параметра для доступа соответственно к загружаемому объекту файла, количеству загруженных байт и общему количеству байт. Поэтому в этом событии вы можете периодически обновлять элементы интерфейса на странице, чтобы своевременно отображать ход загрузки.

Примечание:В Linux Flash Player вызывает это событие только один раз после завершения загрузки всего файла. Официально это ошибка в Linux Flash Player, и текущая библиотека SWFUpload не может ее решить.。

Напоминание:Соответствует пользовательскому событию upload_progress_handler в настройках.

uploadError(объект файла, код ошибки, сообщение)

Всякий раз, когда загрузка прерывается или не завершается успешно, тоuploadErrorсобытие будет вызвано. Параметр кода ошибки указывает текущий тип ошибки. Для более конкретных типов ошибок см.SWFUpload.UPLOAD_ERRORопределения в. Параметр Message представляет описание ошибки. Параметр File представляет объект файла, загрузка которого не удалась.

Например, если мы запрашиваем несуществующую страницу обработки файлов на сервере, то код ошибки будет -200, а сообщение будет 404. Остановка, выход, возврат uploadStart значения false, ошибки HTTP, ошибки IO, превышение лимита количества загружаемых файлов и т. д. — всё это вызовет это событие. Ошибка загрузки не сработает для файлов, которые отменены, но всё ещё ожидают в очереди.(У меня всё ещё есть сомнения по поводу этого официального заявления. После отмены файла как он может остаться в очереди загрузки?)

Напоминание:Соответствует пользовательскому событию upload_error_handler в настройках.

Примечание:На данный момент цикл загрузки файла ещё не завершён, поэтому вы не можете начать загрузку следующего файла здесь.

[Новое содержимое] uploadSuccess(объект файла, данные сервера, полученный ответ)

Когда обработка загрузки файла завершена (здесь "завершена" означает только то, что информация Files была отправлена целевому обработчику; важно только отправление, а не то, была ли она успешно получена), и сервер возвращает статус HTTP 200,uploadSuccessсобытие вызывается.данные сервераОзначает некоторые данные, отправленные сервером (например, то, что вы выводите), аполученный ответ— это код состояния HTTP, отправленный самим сервером.

Из-за некоторых ошибок Flash Player код состояния HTTP может не быть получен, из-за чего событие uploadSuccess не срабатывает. По этой причине в версии 2.50 в объект settings добавлено новое свойство assume_success_timeout, позволяющее задать, превышено ли максимальное время ожидания кода состояния HTTP; если превышено, срабатывает uploadSuccess. В этом случае,(полученный ответ)параметр будет недействителен.

Свойство http_success в объекте settings позволяет настроить так, чтобы событие uploadSuccess также срабатывало, когда код состояния HTTP не равен 200. В этом случае данные сервера от Flash Player недоступны.

В

Напоминание:Соответствует пользовательскому событию upload_success_handler в settings.

Примечание:
  1. данные сервера — это данные, возвращённые обработчиком на стороне сервера.
  2. На этом этапе цикл загрузки файла ещё не завершён, поэтому здесь нельзя начать загрузку следующего файла.
  3. На платформе Windows серверный обработчик должен вернуть непустое значение после обработки сохранения файла; иначе это событие не сработает, и последующее событие uploadComplete не сможет быть выполнено.

uploadComplete(объект файла)

Когда файл в очереди загрузки завершает цикл загрузки, независимо от того, успешно ли (сработало uoloadSuccess) или неудачно (сработало uploadError), будет вызвано событие uploadComplete. Это также означает завершение загрузки одного файла, и можно загружать следующий файл.

Если вы хотите, чтобы следующий файл загружался автоматически, вызов this.startUpload() в этот момент для запуска загрузки следующего файла — хороший выбор. Однако используйте это с осторожностью. См. примечания.

Напоминание:Соответствует пользовательскому событию upload_complete_handler в settings.

Примечание:При загрузке нескольких файлов, если вы используете cancelUpload на полпути для отмены загружаемого файла или используете stopUpload для остановки загружаемого файла, то нужно быть очень осторожным при использовании this.startUpload() в uploadComplete, потому что в вышеуказанных случаях uploadError и uploadComplete будут выполняться последовательно. Поэтому, хотя загрузка текущего файла остановлена, следующий файл будет загружен немедленно. Это может показаться вам странным, но на самом деле программа не ошибается. Если вы хотите прекратить автоматическую загрузку всей очереди, вам потребуется дополнительная обработка в программе.

debug(message)

Если для параметра debug установлено значение true, в нижней части страницы автоматически будет добавлена textArea. Если это событие debug не было переопределено, как библиотека SWFUpload, так и Flash вызовут это событие, чтобы добавить отладочную информацию в поле вывода в нижней части страницы для целей отладки.

Напоминание:Соответствует пользовательскому событию debug_handler в настройках.

Вспомогательные объекты SWFUpload Вспомогательные объекты

Объект Settings Объект Settings

Это переменная типа JavaScript Object, которая предоставляет конфигурацию для инициализации экземпляра SWFUpload.Каждое свойство конфигурации в ней может встречаться только один раз.Многие свойства являются необязательными. Если необязательное свойство не настроено, будет использоваться соответствующее значение по умолчанию, указанное в библиотеке SWFUpload. Подробности см. в подробном описании настроек.

Например:(Все свойства, которые можно настроить в settings)

Пример:

{ 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", } }

Подробное описание параметров настроек Описание настроек

Новый upload_url

Значение по умолчанию:Пустая строка

Настройка upload_url принимает абсолютный или относительный полный URL относительно SWF-файла. Рекомендуется использовать полный абсолютный путь, чтобы избежать ошибок пути запроса, вызванных изменением базового пути браузерами и FlashPlayer. (yukon: На самом деле это относительно. Если ваш swfupload и страница обработки загрузки файлов PHP всегда размещаются в одной папке сайта, я рекомендую использовать относительный путь)

Если свойство preserve_relative_urls объекта settings имеет значение false, SWFUpload преобразует относительные пути в абсолютные, чтобы избежать разбора URL в различные форматы Flash Player на разных системах. Если вы отключите это преобразование в SWFUpload, следует использовать относительный путь для указания расположения swfupload.swf.

Примечание:Здесь необходимо учитывать модель безопасности доменов FlashPlayer.

file_post_name

Значение по умолчанию:Filedata

Параметр file_post_name позволяет задать значение имени загружаемого файла в информации POST (аналогично установке атрибута name у <input type="file" name="Filedata"/> в традиционной форме).

Примечание: (Ожидается в версии 2.5)Этот параметр не работает в Linux; полученное имя всегда Filedata. Поэтому для обеспечения максимальной совместимости рекомендуется использовать значение по умолчанию для этого параметра.

Новый post_params

Значение по умолчанию:Пустой объект

post_params определяет набор пар ключ/значение, которые отправляются на сервер при загрузке каждого файла. Это свойство можно назначить с помощью объекта массива JavaScript. Пары ключ/значение должны быть простыми строками или числами. (Можно проверить с помощью функции typeof() в JavaScript)

Примечание: Flash Player 8 не поддерживает отправку post-данных. SWFUpload будет автоматически отправлять post_params в виде строки запроса.

use_query_string

Значение по умолчанию:false

Это свойство можно установить в true или false; оно определяет, отправляются ли post_params через GET. Если false, они отправляются через POST. Введено в v2.1.0.

Новый preserve_relative_urls

Значение по умолчанию:false

preserve_relative_urls принимает логическую переменную. Он указывает, преобразует ли SWFUpload относительные URL в абсолютные URL. Если установлено true, они не будут преобразованы. По умолчанию false, т. е. автоматическое преобразование.

requeue_on_error

Значение по умолчанию:false

Это свойство можно установить в true или false. Если установлено true, когда в объекте файла возникает uploadError (кроме ошибок fileQueue и ошибок FILE_CANCELLED), объект файла будет повторно вставлен в начало очереди загрузки, а не отброшен. При необходимости файл, поставленный в очередь повторно, можно загрузить снова. Если вы хотите удалить объект файла из очереди загрузки, необходимо использовать метод cancelUpload.

Все события, связанные с неудачной загрузкой, также будут запускаться одно за другим. Поэтому повторная постановка в очередь файла, загрузка которого не удалась, может конфликтовать с Queue Plugin (или пользовательским кодом, который автоматически загружает всю очередь файлов). Если код вызывает метод startUpload, чтобы автоматически загрузить следующий файл, и не принимаются меры для удаления файла, загрузка которого не удалась, из очереди загрузки, то повторно поставленный в очередь файл, загрузка которого не удалась, снова начнёт загружаться, снова потерпит неудачу, будет повторно поставлен в очередь, снова загрузится... что приведёт к бесконечному циклу.

Эта настройка была введена в v2.1.0.

http_success

Значение по умолчанию:[]

Этот массив позволяет настраивать значения HTTP-статусов, которые вызывают событие success. Статус 200 всегда вызывает success, и только статус 200 предоставляет serverData.

При принятии значения HTTP-статуса, отличного от 200, серверу не нужно возвращать содержимое.

Новый assume_success_timeout

Значение по умолчанию: 0

assume_success_timeout задаёт, сколько секунд SWFUpload будет ждать, чтобы обнаружить ответ сервера; при тайм-ауте он принудительно инициирует событие успешной загрузки (uploadSuccess). Это свойство предназначено для корректной работы в обход бага Flash Player, чтобы избежать долгого ожидания ответов сервера, а также для решения проблемы, когда Flash Player на Mac OS не может заставить сервер вернуть содержимое.

Flash проигнорирует ответ сервера через 30 секунд после срабатывания последнего события uploadProgress и принудительно вызовет событие успешной загрузки.

Если assume_success_timeout установлено в 0, эта функция будет отключена. SWFUpload будет долго ждать, пока Flash Player инициирует событие uploadSuccess.

file_types

Значение по умолчанию:*.*

Задаёт правила фильтрации типов файлов для диалога выбора файла. Это свойство принимает разделённые точкой с запятой расширения типов файлов, например «*.jpg;*.gif», что позволяет пользователям видеть и выбирать в диалоге выбора файла только файлы jpg и gif. По умолчанию принимаются все типы файлов.

Напоминание:Эта настройка является лишь фильтром для клиентского браузера и не накладывает ограничений на фильтрацию типов файлов при обработке файлов на стороне сервера. Если вам нужна строгая фильтрация файлов, на стороне сервера также требуется программная проверка.

file_types_description

Значение по умолчанию:Все файлы

Задаёт описание файла, отображаемое пользователю в диалоге выбора файла.

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.

[Новое] flash9_url

(Добавлено в v2.5.0)Элемент управления Flash (SWF), поддерживающий Flash Player 9. Абсолютный или относительный URL.

flash_width

(Удалено в v2.1.0) Определяет ширину HTML-элемента, содержащего Flash. Некоторые браузеры работают неправильно, если этот параметр меньше 1 px. Этот параметр необязателен и имеет значение по умолчанию 1px.

flash_height

(Удалено в v2.1.0) Определяет высоту HTML-элемента, содержащего Flash. Некоторые браузеры работают неправильно, если этот параметр меньше 1 px. Этот параметр необязателен и имеет значение по умолчанию 1px.

flash_color

(Удалено в v2.2.0) Этот параметр задаёт цвет фона HTML-элемента, содержащего Flash. Значение по умолчанию — '#FFFFFF'.

Примечание: этот параметр может работать не во всех браузерах при "скиннинге" 1px Flash-элемента.

prevent_swf_caching

Значение по умолчанию:true

(Добавлено в v2.2.0)Это логическое значение задаёт, добавлять ли случайное значение к URL Flash, чтобы браузер не кэшировал SWF-ролик. Это сделано для решения ошибки, появляющейся в некоторых браузерах на движке IE.

Примечание:SWFUpload напрямую добавляет случайный параметр с именем swfuploadrnd после flash_url. Если указанный flash_url уже содержит GET-параметры, в качестве соединителей появятся два знака вопроса, что вызовет ошибку.

debug

Значение по умолчанию:false

Это значение имеет логический тип и задаёт, вызывается ли событие отладки.

Примечание:Код SWFUpload сравнивает эту переменную со строкой "true" с помощью строгого равенства, поэтому он считает режим отладки включённым только при значении true. Если установить 1, хотя JS считает это включённым и после инициализации будет создана консоль отладки (Debug Console), Flash не будет выводить отладочную информацию в последующих операциях. (Поскольку я привык использовать 1 и 0 для логических переменных, я когда-то недоумевал, почему отладочная информация Flash не выводится.)

button_placeholder_id

Значение по умолчанию:null

(Добавлено в v2.2.0)Этот обязательный параметр задаёт ID DOM-элемента на странице, который заменит swfupload.swf. Когда соответствующий DOM-элемент заменяется элементом SWF, в контейнер SWF будет добавлен селектор стиля с именем "swfupload" для настройки CSS.

button_image_url

Значение по умолчанию:Пустая строка

(Добавлено в v2.2.0)Самое большое изменение в V2.2.0 — добавление кнопки в SWF. С помощью этого параметра можно задать изображение (или SWF) относительно swf-файла или абсолютный адрес в качестве интерфейса кнопки. Можно использовать все типы изображений, поддерживаемые Flash (gif, jpg, png или SWF).

Изображение кнопки должно быть обработано по определённым правилам (CSS Sprite). Изображение кнопки должно включать 4 состояния кнопки, сверху вниз: normal, hover, down/click, disabled. (См. изображение в официальной демонстрации.)

button_width

Значение по умолчанию:1

(Добавлено в v2.2.0)Задаёт атрибут width у SWF.

button_height

Значение по умолчанию:1

(Добавлено в v2.2.0)Задаёт атрибут height у SWF (1/4 высоты изображения кнопки)

button_text

Значение по умолчанию:Пустая строка

(Добавлено в v2.2.0)Это свойство задаёт текст, отображаемый в кнопке Flash, с поддержкой HTML. Стиль HTML-текста можно задать через CSS-селекторы вместе с параметром button_text_style. Подробнее о поддержке HTML текстом во Flash см.Документация Adobe по Flash。

button_text_style

Значение по умолчанию:"color: #000000; font-size: 16pt;"

(Добавлено в v2.2.0)Этот параметр работает вместе с параметром button_text, чтобы задать стиль текста в Flash Button с помощью стилей CSS. Подробности о поддержке CSS для текста Flash см. вдокументации Adobe по Flash

button_text_top_padding

Значение по умолчанию:0

(Добавлено в v2.2.0)Задаёт расстояние текста на Flash Button от верхнего края. Можно использовать отрицательные значения.

button_text_left_padding

Значение по умолчанию:0

(Добавлено в v2.2.0)Задаёт расстояние текста на Flash Button от левого края. Можно использовать отрицательные значения.

button_action

Значение по умолчанию:SWFUpload.BUTTON_ACTION.SELECT_FILES (многофайловая загрузка)

(Добавлено в v2.2.0)Задаёт действие после нажатия Flash Button. По умолчанию используется SWFUpload.BUTTON_ACTION.SELECT_FILES; нажатие кнопки откроет диалог загрузки нескольких файлов. Если установлено SWFUpload.BUTTON_ACTION.SELECT_FILE, это загрузка одного файла. Если установлено SWFUpload.BUTTON_ACTION.START_UPLOAD, начинается загрузка файла.

button_disabled

Значение по умолчанию:false

(Добавлено в v2.2.0)Это булево значение задаёт, находится ли Flash Button в отключённом состоянии. В отключённом состоянии нажатие не выполняет никаких действий.

button_cursor

Значение по умолчанию:SWFUpload.CURSOR.ARROW (курсор-стрелка)

(Добавлено в v2.2.0)Этот параметр задаёт состояние курсора при наведении мыши на Flash Button. По умолчанию — SWFUpload.CURSOR.ARROW; если установлено SWFUpload.CURSOR.HAND, используется курсор-рука.

button_window_mode

Значение по умолчанию:SWFUpload.WINDOW_MODE.WINDOW

(Добавлено в v2.2.0)Этот параметр задаёт конкретный режим, в котором браузер отображает SWF-ролик.

custom_settings

Значение по умолчанию:Пустой объект

Это свойство принимает данные типа 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";
Обработчики событий

Значение по умолчанию:null

Остальные настройки определяют ряд функций обратного вызова для обработки событий. Во время работы SWFUploadбудут запускаться соответствующие события. Если вам нужно выполнять пользовательские операции в этих обратных вызовах, следует определить соответствующие функции JavaScript в настройках.

[Новое] Объект поддержки

Свойство support экземпляра SWFUpload (его тип — объект) позволяет проверить, поддерживаются ли определённые возможности SWFUpload версией Flash Player, используемой браузером.

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

Объект File

Объект File содержит набор доступных свойств файла. Многие события обработки передают параметр 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 }

Объект статистики

Этот объект предоставляет информацию о состоянии очереди загрузки. Вы можете получить этот объект, обратившись к методу 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。

Плагины SWFUpload

Несколько плагинов появилось после SWFUpload v2.0. Они помогают SWFUpload реализовать некоторые функции.

Документация для большинства плагинов находится в папке js plugin.

SWFObject

Плагин SWFObject используетбиблиотеку SWFObjectдля вставки Flash-компонента SWFUpload на страницу.

Этот плагин также предоставляет функцию определения завершения загрузки структуры документа (Document Ready loading). (yukon: эта функция может быть похожа на $(document).ready() из jQuery) и определение версии Flash. Подробное использование описано в папке этого плагина. Лучше не смешивайте определение готовности документа из SWFObject с аналогичными функциями других библиотек. Используйте только одну из них.

Flash Player 10: Поскольку Flash Player 10 требует кнопку для запуска связанных операций ролика, если эта кнопка (её id может быть указан свойством button_placeholder_id в объекте настроек) установлена в hidden или display:none с помощью CSS или аналогичных средств, SWFUpload не сможет загрузиться.

Cookies

Чтобы исправить ошибку Flash Cookie, плагин Cookies будет автоматически получать cookie вашего браузера и отправлять их вместе с загрузкой. Cookie будут отправляться на URL загрузки в форме POST или GET.

Этот плагин отправляет пары ключ/значение cookie через POST или GET. На стороне сервера они не будут разбираться как cookie. Некоторые фреймворки, которые автоматически определяют cookie для подтверждения сессии и аутентификации, могут не получить значения, переданные этим плагином.

Обработка очереди

Плагин Queue Handling предоставляет функциональность обработки очереди. Например, загрузку всей очереди, отмену всей очереди и автоматический запуск загрузки после добавления в очередь.

Скорость

Плагин speed расширяет несколько свойств объекта 'file', чтобы описать текущее состояние загрузки. Этот плагин включает такие значения, как текущая скорость, средняя скорость, прошедшее время и оставшееся время.

Известные проблемы

Ошибки в Flash Player и многих браузерах долго преследовали SWFUpload. Но мы упорно работали над этим.

Отмена в Linux

В Flash 9 Player и более ранних версиях выполнение операции отмены загрузки в Linux может привести к падению браузера. Однако в более новых версиях Flash Player эта проблема стала менее выраженной.

Прогресс загрузки в Linux

Flash Player в Linux генерирует событие прогресса загрузки (uploadProgress) только после завершения загрузки, а не непрерывно во время загрузки, как это происходит в Windows.

Это связано с тем, что некоторые дистрибутивы Linux блокируют весь браузер во время загрузки.

Прогресс загрузки в OS X

Мы получили несколько сообщений о том, что Flash Player в MAC OS не вызывает событие uploadProgress. Конкретные обстоятельства пока неизвестны, но, пожалуйста, учитывайте потенциальную проблему.

MIME-тип

Независимо от фактического MIME-типа файла, Flash Player использует MIME-форматapplication/octet-streamдля загрузки всех файлов.

Максимальное количество выбранных файлов

Сам Flash Player не ограничивает максимальное количество файлов, которые можно выбрать для загрузки, но он ограничивает максимальную общую длину имён файлов. Эта строка составляется так: "имя файла" пробел "имя файла" ... Количество файлов, которые можно загрузить, зависит от ограничения операционной системы на общую длину имён файлов. Если пользователь выбирает слишком много файлов, в диалоговом окне выбора файлов отображается предупреждающее сообщение от Flash Player (yukon: однажды я загрузил 173 файла сразу на XP без предупреждения...).

Прокси

Flash Player может работать с прокси некорректно. У него есть проблемы с обработкой аутентификации прокси, что может вызывать определённые конфликты.

Некоторые антивирусные программы используют локальный клиентский прокси для получения загружаемых файлов и их сканирования (по-видимому, он перехватывает загружаемый файл, записывает его на прокси-сервер и только после завершения сканирования действительно отправляет его на целевой сервер). Это заставляет SWFUpload ошибочно считать, что весь файл был загружен; он будет генерировать большое количество событий uploadProgress, пока не будет достигнуто 100%. Пока прокси фактически загружает данные на целевой сервер, SWFUpload выглядит приостановленным.

Антивирус Kaspersky: Kaspersky(а также некоторые другие антивирусные программы) реализует клиентский прокси для перехвата локально исходящих данных загрузки. SWFUpload не может обнаружить существование этой прокси-системы. Эти прокси-серверы могут очень быстро принимать загружаемые файлы, сканировать их и затем отправлять на целевой сервер.

Модуль безопасности Apache — Apache mod_security

Модуль безопасности Apache mod_security проверяет POST-сообщения, получаемые сервером. Flash Player реализует особый случай (следует ли 'an edge case' переводить как '取巧way of'?) (есть параметр, который может решить, нужно ли проверять). POST загружает файлы, и сервер также реализует это.

SSL (Secure Sockets Layer)

Мы получили сообщения о том, что Flash Player не может загружать файлы через SSL. Конкретные обстоятельства этой проблемы ещё не подтверждены, но, похоже, загрузка через SSL ненадёжна. Проблемы особенно возникают при использовании самоподписанных сертификатов с открытым ключом.

Аналогично, SSL-сертификаты, выпущенные недоверенными центрами сертификации (CA), не могут быть приняты Flash, поскольку Flash не предоставляет способа принять такие сертификаты. Как и в случае с упомянутой ранее ошибкой с cookie, Flash Player в Windows принимает только сертификаты, выпущенные CA из своего списка доверенных, независимо от сертификата, который в данный момент используется браузером.

Аутентификация

Механизмы HTTP-аутентификации плохо поддерживаются Flash Player. Новые версии Flash Player несколько лучше; старые версии могут вызывать сбои браузера.

Преждевременно прерванные соединения

Преждевременное завершение ответа (например, с помощью метода Response.end() в ASP.NET) может привести к тому, что SWFUpload сообщит об ошибке загрузки, хотя загрузка фактически завершилась.

Имя POST-поля файла: имя POST-поля Filedata в Linux

Изменение имени принимаемого файла (по умолчанию "Filedata", задаётся через свойство file_post_name в объекте settings) не работает в Flash Player под Linux.

Ошибка с cookie

В Windows в браузерах, отличных от IE (FireFox, Opera, Safari и т. д.), плагин Flash отправляет cookie-файлы IE. Это нарушает работу механизмов сессий и аутентификации на многих серверах.

Разработчикам приходится вручную решать проблему передачи информации о сессии и аутентификационных cookie, а также вручную изменять сессию на сервере, если они хотят использовать сессии.

Однако пакет SWFUpload предоставляет пример кода для решения этой ошибки на PHP или ASP.Net.

Ошибки ExternalInterface

При взаимодействии с браузером/JS Flash Player не может корректно использовать метод escape для кодирования данных. SWFUpload приложил большие усилия для решения этой проблемы. В будущем, если эта ошибка будет исправлена, SWFUpload будет отправлять дополнительные данные, закодированные с помощью escape.

Ошибки, связанные с длиной данных сервера

Чрезмерно длинные данные ответа сервера могут вызывать ошибки в Flash Player в системах MAC или Linux. Данные могут быть усечены, изменены или в некоторых случаях продублированы. Мы рекомендуем, чтобы сервер возвращал как можно более короткие и лаконичные данные.

Браузер Avant

После кэширования SWFUpload работает неправильно в браузере Avant.

Начиная с SWFUpload v2.2.0, была добавлена настройка prevent_swf_caching, чтобы попытаться решить эту проблему.

Диалог выбора файла и смена страницы

Уход со страницы или её обновление, пока открыт диалог выбора файла, приведёт к аварийному завершению браузера. (Во всех браузерах, во всех операционных системах.)

Эта ситуация в основном возникает, когда вы задаёте для гиперссылки <a> «onclick» для вызова selectFile/selectFiles, но не предотвращаете её действие навигации по умолчанию. Щелчок по ссылке приведёт к переходу на другую страницу и одновременно откроет диалог выбора файла.

(yukon: Другая возможность: программа принудительно выполняет обновление или перенаправление страницы. Например, обновление в HTML-теге <meta>, Response.Redirect() в ASP.NET, header() в PHP и т. д.)

Долго выполняющиеся скрипты загрузки

После того как Flash загружает файл на веб-сервер, выполняется скрипт приёма загрузки. Скрипт приёма решает, сохранять ли файлы, создавать ли эскизы, сканировать ли на вирусы и т. д. Если скрипт приёма не возвращает никаких данных в течение 30 секунд, Flash разрывает соединение и возвращает ошибку IO.

Если вы не хотите, чтобы это произошло, то во время обработки заставьте сервер вернуть несколько символов или данных (если это возможно).

Например, в PHP, хотя PHP-скрипт может продолжать успешно завершать свои операции после отключения Flash, Flash не получит никаких возвращённых данных после отключения.

Режим окна WMODE / BUTTON_WINDOW_MODE

В некоторых браузерах, если элемент управления Flash не находится в видимой области экрана, установленный WMODE (настроенный с помощью BUTTON_WINDOW_MODE) не позволит элементу управления Flash загрузиться. Только когда вы прокрутите страницу и переместите элемент управления Flash в видимую область экрана, он загрузится и отрисуется.

(yukon: Это сделано для того, чтобы страница отрисовывалась как можно быстрее. Например, если вы откроете папку, полную изображений, установите режим просмотра в виде эскизов и быстро прокрутите вниз, вы увидите, как файлы изображений ниже постепенно отображают своё содержимое.)

Такое поведение может неблагоприятно повлиять на плагин SWFObject. События SWFUpload могут не срабатывать, а фоновое изображение кнопки может не загрузиться, пока элемент управления не будет отрисован.

В некоторых операционных системах (Linux), когда WMODE установлен в transparent, диалоговое окно выбора файла, открываемое Flash, будет появляться позади окна браузера.

Утечки памяти

Некоторые браузеры (особенно IE) не могут освобождать память после того, как Flash Player использует класс ExternalInterface для взаимодействия с JS (например, SWFUpload). Создание слишком большого количества экземпляров SWFUpload и обновление страницы несколько раз приведёт к тому, что браузер начнёт занимать чрезмерный объём памяти, что, в свою очередь, приводит к сбоям браузера или другим системным ошибкам.

В SWFUpload v2.2.0 мы реализовали некоторые механизмы предотвращения утечек памяти. Однако по-прежнему рекомендуется вызывать метод destroy() при закрытии страницы. Если вы используете сотни экземпляров SWFUpload на одной странице, необходимо тщательно протестировать, чтобы предотвратить утечки памяти.

Некоторые проблемы, связанные с Mac OS — другие проблемы Mac

  • Данные, возвращаемые сервером или Flash Player в системах Mac, могут не вызывать событие uploadSuccess. Мы добавили настройку assume_success_timeout, чтобы помочь решить эту проблему. Однако в целом очень легко и надёжно вернуть короткое поле после успешного получения.
  • Некоторые пользователи сообщали о проблемах при загрузке по адресам с поддоменом в системах Mac.
  • Некоторые пользователи сообщали, что перенаправления (код состояния HTTP 302) плохо обрабатываются Mac Flash Player. Похоже, в Windows такой проблемы нет. Перенаправления 302 часто используются в некоторых режимах авторизации и MVC-фреймворках.
  • В документации по разработке Flash указано, что в системах более ранних версий, чем OS X 10.3, количество загруженных байтов всегда будет равно -1. SWFUpload изменяет его на 0, но общее количество байтов не будет отправлено, и прогресс никогда не достигнет 100%. Поэтому, пожалуйста, обновите UI, чтобы показывать 100%, когда загрузка завершена и срабатывает событие uploadSuccess или uploadComplete. Это обеспечивает согласованность UI во всех системах.
  • Некоторые пользователи сообщали, что Mac Flash Player испытывает проблемы, когда путь загрузки содержит пробелы. Пожалуйста, замените их на + или %20.
  • Некоторые пользователи сообщали, что Mac Flash Player добавляет номер порта в заголовок HTTP HOST (например, http://www.example.com:80). Если вы проверяете этот параметр, будьте внимательны и учтите эту проблему.
  • Если файл содержит только resource fork, Flash Player будет рассматривать его как файл размером 0 байт, и его нельзя будет загрузить (Примечание: возможно, в Flash Player 10.1 эта проблема исправлена).