Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE9文件上载不工作_Javascript_Angularjs_Internet Explorer - Fatal编程技术网

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
})