以编程方式打开文件选择dojox / Uploader

时间:2014-07-07 12:10:19

标签: javascript file-upload dojo

我需要通过单击与小部件无关的div来选择要使用dojox / Uploader上传的文件。

我已尝试使用on.emit,但没有任何反应(也{d}在{d}节点click()onclick()等... ...

这是我的代码:

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
});

小部件必须隐藏,所以我不能按小部件选择按钮。我需要通过单击其他div打开选择文件对话框,以便...如何以编程方式打开文件浏览器以选择文件?

任何帮助将非常感谢。 (请原谅我的英文不好) 感谢

1 个答案:

答案 0 :(得分:3)

好吧,我找到了解决方案。我拿一个小部件内部节点来调用click,并将一个监听器附加到Uploader更改事件并完成事件......

首先,将click事件附加到节点。

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

附加到上传器更改并完成事件处理程序

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

});

在我的情况下,我需要发送没有表单的formdata ...所以使用de upload方法。该文件也必须是XLSX。

我希望这会有所帮助。

此致

相关问题