2014-07-07 5 views
3

Je dois sélectionner un fichier à télécharger avec dojox/Uploader en cliquant sur un div sans rapport avec le widget.Open File Selection dojox/Uploader par programme

J'ai tryed en utilisant on.emit, mais rien ne se passe (aussi click(), onclick() etc ... sur domNodes ..)

Voici mon code:

var myUploader = new dojox.form.Uploader({ 
      id : 'myUploader', 
      url : baseUrl + '/upload/form', 
      style : { 
       'overflow': 'hidden', 
       'position': 'relative', 
       'opacity' : 0     
      } 
     },"uploaderHolder"); 

myUploader.startup(); 

var importButtonNode = dom.byId("importDivButton"); 

on(importButtonNode,"click",function(evt) { 
    on.emit(myUploader.domNode, "click", { 
     bubbles: true, 
     cancelable: false 
}); 

Le widget doit être caché, donc je ne peux pas appuyer sur le bouton de sélection de widget. J'ai besoin ouvrir la boîte de dialogue de sélection de fichier en cliquant sur autre div si ... comment puis-je ouvrir le navigateur de fichiers par programme pour sélectionner un fichier?

Toute aide sera très appréciée. (S'il vous plaît, excusez mon mauvais anglais) Merci

+0

Quelle est votre question/problème? –

+1

comment puis-je ouvrir le navigateur de fichiers par programme pour sélectionner un fichier? Le bouton du widget sera caché. – bertie

+0

Veuillez ajouter votre question à l'article de la question en cliquant sur «modifier» et modifier en conséquence. Cela aide à trouver des réponses à votre question. –

Répondre

3

Eh bien, je trouve une solution. Je prends un nœud interne de widgets pour appeler click, et attacher un écouteur à l'événement de changement de Uploader et compléter l'événement ...

D'abord, attachez l'événement de clic à un noeud.

var importButtonNode = dom.byId("myImportDiv"); 
on(importButtonNode,"click",function(evt) { 
    myUploader.domNode.childNodes[0].click(); 
}); 

Fixer au changement Uploader et les événements complets un gestionnaire

myUploader.on("change",function(evt){ 
    if(evt[0].type != FileTypes.XSLX_FILE_TYPE){ 
     alert("Error file type must be XLSX");    
    } else { 
     var formData = new Object(); 
     formData.idProject = project.id; 
     myUploader.upload(formData);  
    } 
}); 
myUploader.on("complete",function(evt){ 
    alert("File Uploaded"); 
    // do things 

}); 

Dans mon cas, je dois envoyer formdata sans forme ... donc utiliser de méthode de téléchargement. Le fichier doit également être XLSX.

J'espère que cela aide.

Cordialement