Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以编程方式打开文件选择dojox/Uploader_Javascript_File Upload_Dojo - Fatal编程技术网

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

Javascript 以编程方式打开文件选择dojox/Uploader,javascript,file-upload,dojo,Javascript,File Upload,Dojo,我需要通过单击与小部件不相关的div来选择要使用dojox/Uploader上载的文件 我尝试在.emit上使用,但没有任何效果(在domNodes上也使用单击(),onclick()等) 这是我的代码: var myUploader = new dojox.form.Uploader({ id : 'myUploader', url : baseUrl + '/upload/form', style : {

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

我尝试在.emit上使用
,但没有任何效果(在domNodes上也使用
单击()
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
});

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

我找到了一个解决方案。我使用一个widgets内部节点来调用click,并将一个侦听器连接到Uploader change事件和complete事件

首先,将单击事件附加到节点

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。。。所以使用去上传的方法。此外,该文件必须是XLSX

我希望这有帮助


关于

您的问题/问题是什么?如何以编程方式打开文件浏览器以选择文件?窗口小部件按钮将被隐藏。请通过单击
编辑
将您的问题添加到问题文章中,并进行相应修改。这有助于找到问题的答案。完成后,问题已添加感谢您的评论Gottieb Notschnabel!