我理解IE9及以下版本不支持多个文件输入的文件上传。 但我甚至无法在单文件上传中获取文件!
<input type='file' id='imgfile' />
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?
答案 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组件读取。