bertie
bertie

Reputation: 503

Open File Selection dojox/Uploader programmatically

I need to select a file to upload with dojox/Uploader by clicking on a div not related to the widget.

I've tried using on.emit, but nothing happens (also click(), onclick() etc... on domNodes..)

This is my 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
});

The widget must be hidden, so I can't press widget select button. I need open select file dialog by click other div so... how can I open the file browser programmatically to select a file?

Upvotes: 3

Views: 453

Answers (1)

bertie
bertie

Reputation: 503

Well, I find out a solution. I take a widgets inner node to call click, and attach a listener to the Uploader change event and complete event...

First, attach click event to a node.

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

Attach to Uploader change and complete events a handler

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

});

In my case I need send formdata without a form... so use de upload method. Also the file must be XLSX.

I hope this helps.

Regards

Upvotes: 3

Related Questions