1

IE9以下では、複数のファイルを含む入力のファイルアップロードがサポートされていないことを理解しています。しかし、 1つのファイルのアップロードでファイルを取得することさえできません!

HTML:

<input type='file' id='imgfile' />

Javascript:

var input = document.getElementById("imgfile");
input.addEventListener("change", function (evt) {
file = this.files[0]; /** Is it possible to even just do this much in IE? **/

            if (!!file.type.match(/image.*/)) {
                if ( window.FileReader ) {
                    reader = new FileReader();
                    reader.onloadend = function (e) { 
                        showUploadedItem(e.target.result, file.fileName);
                    };
                    reader.readAsDataURL(file);
                }
                if (formdata) {
                    formdata.append("images[]", file);
                }
            }
                   /* some stuf */
}

FileReader APIがIEで機能しないことはわかっていますが、どうなりますか?何らかの解決策が必要です。私はこれにしばらく時間を費やしましたが、それは私を逃れています!

編集

言及すべきだったのですが、私はajaxを使用しています。したがって、上記のJavaScriptは、アップロードされたファイルがPHPを使用してアップロードされた後にトリガーされます。これは、IEでajaxを使用することさえできないことを意味しますか?

4

2 に答える 2

2

input.filesはHTML5プロパティであり、これをテストしているブラウザではサポートされていない可能性があります。

試しましたinput.valueか?

于 2012-09-11T13:04:55.153 に答える
1

IE を使用して、JavaScript で選択したファイルをアップロードすることはできません。このファイルをサーバーに送信するには、ファイルのアップロードを含むフォームを送信する必要があります (古き良き方法)。

最近のブラウザーは、Ajax ファイルのアップロードをサポートしています (Chrome、Firefox、Opera)。これには、XHR2 が必要です。IE9 ではサポートされていませんが、IE10 ではサポートされているはずです: http://caniuse.com/#feat=xhr2

しかし、あなたのJavaScriptがサーバーからファイルを取り戻す方法がわかりません。Ajax を使用する場合は、fileupload コンポーネントからではなく、Ajax リクエスト出力からファイルを読み取ることを想定しています。

于 2012-09-11T13:17:30.157 に答える