Uploader has been rebuilt in version 3.5.0, and a number of additional supporting modules (`UploaderFlash`, `UploaderHTML5`, `Uploader.Queue` and `File`) have been added. The new architecture is not fully backward-compatible with versions 3.4.1 and prior. This guide is to help answer questions that may come up when upgrading to the latest version.
This guide focuses on 3.4.1 API compatibility. It does not describe new features added in 3.5.0. Refer to the updated Uploader user guide for that.
If you are unable to upgrade due to unresolvable issues, you can use the `uploader-deprecated` module, which is equivalent to the 3.4.1 implementation. But be aware that this module will be removed in a future version of YUI.
The architectural changes resulted in the deprecation, replacement, or removal of some of the attributes, properties, methods and events from 3.4.1 version of the Uploader. Here is a quick list of the changes most likely to affect your upgrade:
Attribute in 3.4.1 | Change in 3.5.0 |
---|---|
`buttonSkin` | No longer exists. The Uploader in Flash mode is now always rendered as transparent, overlaying a "Select Files" button that can be replaced with any control (with any skin) using the `selectFilesButton` attribute. |
`fileFilters` | Only available when the Uploader is in Flash mode, and has no effect when the Uploader is in HTML5 mode. If filtering by extension is needed across all Uploader modes, it is best to implement it post-selection, by validating individual elements in the `fileList`. |
`log` | No longer exists. All necessary uploader information is transmitted via events. |
`multiFiles` | Renamed to `multipleFiles` |
`transparent` | No longer exists. The Uploader in Flash mode is now always rendered as a transparent overlay over a "Select Files" button that can be customized or replaced with any control using the `selectFilesButton` attribute. |
Method in 3.4.1 | Change in 3.5.0 |
---|---|
`cancel` | No longer exists on the Uploader instance. Instead, a `cancelUpload()` method is present on the instance of Uploader's queue, stored in `uploaderInstance.queue`. (See the API Docs for more information). |
`clearFileList` | No longer exists. Instead, you can directly manipulate the `fileList` attribute. |
`enable` | No longer exists. Instead, set the `enabled` attribute to either `true` or `false`. |
`disable` | No longer exists. Instead, set the `enabled` attribute to either `true` or `false`. |
`removeFile` | No longer exists. Instead, you can directly manipulate the `fileList` attribute. |
`upload` | The method signature has changed. The new `upload()` method takes `file`, `url`, and `postVars` as arguments, where `file` is a references to an instance of `Y.File` (can be obtained from the `fileList` attribute), `url` is the target URL to upload the file to, and `postVars` is a set of key-value pairs specifying the variables that should be POSTed along with the file upload. The old `method` argument has been removed since file upload requests are always POSTed. The old `postFileVarName` argument has been replaced with an instance-level `fileFieldName` attribute. (See the API Docs for more information). |
`uploadAll` | The method signature has changed. The new `uploadAll()` method takes `url`, and `postVars` as arguments, where `url` is the target URL to upload the files to, and `postVars` is a set of key-value pairs specifying the variables that should be POSTed along with the file upload. If POST variables need to be specified per file, you can use the `postVarsPerFile` attribute instead of specifying the third argument. The old `method` argument has been removed since file upload requests are always POSTed. The old `postFileVarName` argument has been replaced with an instance-level `fileFieldName` attribute. (See the API Docs for more information). |
`uploadThese` | The method signature has changed. The new `uploadThese()` method takes `files`, `url`, and `postVars` as arguments, where `files` is an array of `Y.File` instances (can be obtained as a subset of `fileList` attribute), `url` is the target URL to upload the files to, and `postVars` is a set of key-value pairs specifying the variables that should be POSTed along with the file upload. If POST variables need to be specified per file, you can use the `postVarsPerFile` attribute instead of specifying the third argument. The old `method` argument has been removed since file upload requests are always POSTed. The old `postFileVarName` argument has been replaced with an instance-level `fileFieldName` attribute. (See the API Docs for more information). |
Obviously, there were quite a few changes to Uploader from 3.4.1 to 3.5.0. It's likely that we missed something here. If you experience trouble with your upgrade and find this migration guide is missing something important, please file a ticket and we'll update it as soon as possible.
Additional resources to help with the upgrade include the forums, and the #yui IRC channel on freenode.net.