从IE中的输入类型=文件中获取SINGLE文件

时间:2012-09-11 12:57:39

标签: javascript internet-explorer file-upload

我理解IE9及以下版本不支持多个文件输入的文件上传。 但我甚至无法在文件上传中获取文件!

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?

2 个答案:

答案 0 :(得分:2)

input.files是一个HTML5属性,在您使用的任何浏览器中很可能not supported

您是否尝试过input.value

答案 1 :(得分:1)

使用IE无法使用javascript上传所选文件。要将此文件发送到服务器,您需要提交包含文件上载的表单(旧的方式)。

最近浏览器支持Ajax文件上传(Chrome,Firefox和Opera)。为此,您将需要XHR2。 IE9不支持它,但IE10应该:http://caniuse.com/#feat=xhr2

但我不明白你的javascript是如何从服务器取回文件的。如果要使用Ajax,则应该从Ajax请求输出中读取文件,而不是从fileupload组件读取。