Javascript IE9文件上载不工作
我用这种方式上传文件:Javascript IE9文件上载不工作,javascript,angularjs,internet-explorer,Javascript,Angularjs,Internet Explorer,我用这种方式上传文件: <input type="file" name="upload-file" ng-model= "excelFile" accept=".xlsx" onchange="angular.element(this).scope().fileChanged(this);" required="true" /> 它在FireFox、Chrome IE10、I
<input type="file"
name="upload-file"
ng-model= "excelFile"
accept=".xlsx"
onchange="angular.element(this).scope().fileChanged(this);"
required="true"
/>
它在FireFox、Chrome IE10、IE11中工作,但在IE9中,它显示“文件为空,未定义”。我认为这是因为在IE中,事件在window.event中,没有作为参数传递给事件处理程序。因此,“
this
”将是IE上的文档根目录或未定义
通过将console.log(this)
放在IE上的事件处理程序中,您可以轻松地对其进行测试
我想你可以用一个本地的角度指令来改变,或者
$scope.$watch('excelFile', function(newVal){
// implementation
})
在范围内 我在上传图像文件时也遇到了同样的问题。它在IE10和更高版本中运行良好。 任何低于10的版本,文件上传不起作用。请参阅此链接
IE9Issue:无法在您的方法中使用IE9及以下版本。您有两种可能的方法: 1.在IE9和更低版本的情况下使用闪存上传器。尽量避免这种情况
2.使用将为您提供“某种类型”的文件访问,如HTML5所述:)如前所述,任何使用FormData和文件API的文件上载方法在IE9中都不起作用,因为它们在IE10之前都不可用 但是,有两个angular模块具有回退方法,可与IE9一起用于上载我所知的文件:
- :但是,需要为IE9上传安装闪存
我使用的是nervgh/angular文件上传,因为它不需要Flash。您是在上传到同一个域还是在发出
跨源请求
?-您可能正在尝试使用的文件API不适用于IE9。你必须找到一个带有垫片的库才能工作。我用这个库上传文件,效果很好。有一个使用AngularJS的示例:试试Dropzone.js,它是一个非常有用的库。@LeeWillis这个示例在ie9中不起作用
$scope.$watch('excelFile', function(newVal){
// implementation
})