使用“自定义文件”上载应用程序。我有2个主要问题:


以下给出的以下代码未打开Mozilla和IE的文件对话框。
在Chrome中,它可以正常工作,但是当我选择“首次单击文件”时,它永远不会将文件添加到正文中。但是在第二次单击中,它会将在“第一次单击中浏览”的文件添加到正文中。


对于以上问题的任何帮助将不胜感激。

函数perform1Click(node){

            alert(“ INIT”);
            var evt = document.createEvent(“ MouseEvents”);
            evt.initEvent(“ click”,true,false);
            node.dispatchEvent(evt);

            警报(3)
            getFile(evt);

        }

        函数getFile(event){

            var files = event.target.files;
            var totalSize = 0;

            如果(totalSize> 1024 * 10){

                alert('总大小超过1 Mb。');
                返回;
            }
            //警告(文件)
            //alert(files.length);
            for(var i = 0,f; f = files [i]; i ++){

                displayFileList(f.name,f.size);
                totalSize = totalSize + f.size;
            }
        }

        函数displayFileList(name,size){

            如果(name!=''){

                var top_plugin = document.getElementById('top_plugin');

                //创建标签
                var ptag = document.createElement(“ p”);

                //创建div
                var divBox = document.createElement(“ div”);
                divBox.setAttribute('class','divBox');

                //创建输入[type ='checkbox']
                var inputCheckBox = document.createElement(“ input”);
                inputCheckBox.setAttribute('type','checkbox');
                inputCheckBox.setAttribute('id','checkboxClass')

                //在div中添加复选框。
                divBox.appendChild(inputCheckBox);

                //为divBox创建文本节点并将其添加到divBox中。
                var txtNode = document.createTextNode(name);
                divBox.appendChild(txtNode)

                var sizeDivBox = document.createElement(“ p”);
                sizeDivBox.setAttribute('style','clear:both; display:inline-block;');

                var txtSizeNode = document.createTextNode(size);
                sizeDivBox.appendChild(txtSizeNode);
                divBox.appendChild(sizeDivBox);

                //将divBox添加到ptag。
                ptag.appendChild(divBox);
                //ptag.appendChild(divTxt);

                //将ptag添加到top_plugin div。
                top_plugin.appendChild(ptag);
            }

            //如果文件值不为null,请将其留空。
            如果(name!='')
            {
                名称='';
            }
        }

最佳答案

我得到了相同问题的解决方案。请在下面的新代码中查找。

   function uploadDFiles() {

        var file = document.getElementById('_file');
        file.click();

        try {
            file.addEventListener("change", getFileName);
        }
        catch (e) {
            file.attachEvent("onclick", getFileNameOnIE);
            alert("Error:: "+e.description);
        }
    }

    function getFileName(event) {

        var files = event.target.files;
        for (var i = 0, f; f = files[i]; i++) {

            var fileName = f.name;
            var fileSize = f.size;

            var fSize = bytesToSize(fileSize, 2);

            displayFileList(fileName, fSize);
        }
    }


但是现在我有了新问题。这段代码在IE中不起作用。对于IE,我正在使用attachEvent方法并且不起作用。请在下面的代码中找到:

    function getFileNameOnIE(event) {

        alert(event.type);
        var files = event.target;
        alert(files.length);

        for (var i = 0, f; f = files[i]; i++) {

            displayFileList(f.name, f.size);
        }
    }


有人可以为我提供同样的解决方案吗?

-

ks
巴拉特

07-27 14:05