Je ne trouve aucune documentation sur la création programmatique de dojox/form/Uploader. J'ai essayé par moi-même, mais il semble que le mécanisme d'enregistrement du plugin soit en quelque sorte cassé.
require([
"dojo/dom-construct",
"dijit/form/Button",
"dojox/form/Uploader",
"dojox/form/uploader/FileList",
"dojox/form/uploader/plugins/IFrame",
"dojo/domReady!"
], function(domConstruct, Button, Uploader, UploaderFileList) {
var form = domConstruct.create('form', {
method: 'post',
enctype: 'multipart/form-data',
class: 'Uploader'
}, document.body);
var up = new Uploader({
label: 'Pick files',
multiple: true,
url: '/echo/json/'
}).placeAt(form);
var list = new UploaderFileList({
uploader: up
}).placeAt(form);
var btn = new Button({
type: 'submit',
label: 'upload',
onClick: function() {
up.upload();
}
}).placeAt(form);
btn.startup();
up.startup();
list.startup();
});
Exemple sur jsfiddle aquí .
Pour autant que je comprenne le code source de dojox/form/Uploader et dojox/form/uploader/plugins/IFrame, le plugin est enregistré via la fonction dojox.form.addUploaderPlugin, qui redéclare la classe du widget Uploader en utilisant self et les plugins enfichés comme ses prédécesseurs. Mais la méthode clé "upload" du widget Uploader n'est jamais remplacée par le plugin HTML5 (qui est inclus automatiquement avec le plugin Iframe).
S'agit-il d'un bogue ? Ou est-ce que je fais quelque chose de mal ?
Merci de votre aide !