1

カスタム ファイル アップロード アプリケーションに取り組んでいます。2 つの大きな問題があります。

  1. 以下のコードは、Mozilla および IE のファイル ダイアログ ボックスを開いているわけではありません。
  2. Chromeでは機能しますが、最初のクリックでファイルを選択すると、ファイルが本文に追加されることはありません。ただし、2 回目のクリックでは、1 回目のクリックで参照したファイルを本文に追加します。

上記の問題に対するヘルプをいただければ幸いです。

関数 perform1Click(ノード) {

            アラート ("INIT");
            var evt = document.createEvent("MouseEvents");
            evt.initEvent("クリック", true, false);
            node.dispatchEvent(evt);

            アラート(3)
            getFile(evt);

        }

        関数 getFile(イベント) {

            var ファイル = event.target.files;
            var totalSize = 0;

            if (totalSize > 1024*10) {

                alert('合計サイズが 1 MB を超えています');
                戻る;
            }
            //アラート(ファイル)
            //alert(files.length);
            for (var i = 0, f; f = ファイル[i]; i++) {

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

        関数displayFileList(名前、サイズ){

            if (名前!= '') {

                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("入力");
                inputCheckBox.setAttribute('タイプ', 'チェックボックス');
                inputCheckBox.setAttribute('id', 'checkboxClass')

                // チェックボックスを div に追加します。
                divBox.appendChild(inputCheckBox);

                // divBox のテキスト ノードを作成し、divBox に追加します。
                var txtNode = document.createTextNode(名前);
                divBox.appendChild(txtNode)

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

                var txtSizeNode = document.createTextNode(サイズ);
                sizeDivBox.appendChild(txtSizeNode);
                divBox.appendChild(sizeDivBox);

                // divBox を ptag に追加します。
                ptag.appendChild(divBox);
                //ptag.appendChild(divTxt);

                // top_plugin div に ptag を追加します。
                top_plugin.appendChild(ptag);
            }

            // ファイルの値が null でない場合は、空白にします。
            if (名前 != '')
            {
                名前 = '';
            }
        }
4

1 に答える 1

0

私は同じ問題の解決策を得ました。以下の新しいコードを見つけてください。

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

誰かが私に同じ解決策を提供できますか?

--

Tks バラット

于 2012-04-05T05:36:34.657 に答える