1

我了解 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?

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,你应该从你的 Ajax 请求输出中读取文件,而不是从你的 fileupload 组件中读取。

于 2012-09-11T13:17:30.157 回答