Angular IE9 fileupload无法正常工作

时间:2014-08-24 13:35:40

标签: javascript angularjs internet-explorer

我用这种方式上传文件:

  <input type="file" 
         name="upload-file" 
         ng-model= "excelFile" 
         accept=".xlsx" 
         onchange="angular.element(this).scope().fileChanged(this);"
         required="true" 
  />

在控制器中创建fileChanged方法

 $scope.fileChanged = function(files) {
     $scope.excelFile = files[0];
 };

它适用于FireFox,Chrome IE10,IE11,但在IE9中它显示&#34;文件为null我们未定义&#34;。

5 个答案:

答案 0 :(得分:3)

上传图片文件时遇到了同样的问题。它在IE10及更高版本中运行良好。 任何低于10的版本,文件上传都不起作用。请参阅此链接

IE9Issue:File Upload using AngularJS

答案 1 :(得分:2)

这是不可能的。 IE9不支持文件API。

您可以在stackoverflow question

上引用此MSDN和此页面

答案 2 :(得分:2)

使用您的方法无法使用IE9及以下版本。你有两种可能的方法: 1.在IE9及更低版本的情况下使用Flash上​​传器。尽量避免这种情况 2.使用http://malsup.com/jquery/form/,它将为您提供“某种”文件访问权限,如HTML 5所示:)

答案 3 :(得分:1)

如上所述,使用FormData和File API的任何文件上传方法都不能在IE9中使用,因为它们在IE10之前不可用。

但是,有两个角度模块具有回退方法,可以使用IE9上传我知道的文件:

我正在使用nervgh / angular-file-upload,因为它不需要Flash。

答案 4 :(得分:0)

我认为这是因为在IE中,事件在window.event中,而不是作为参数传递给事件处理程序。因此,&#39; this&#39;将是IE上的doc root或undefined。

您可以通过在IE上的事件处理程序中放置console.log(this)来轻松地对其进行测试。查看this article中的“活动差异”部分。

我认为你可以使用原生的角度指令ng-change,或者只是

$scope.$watch('excelFile', function(newVal){
// implementation
})

在范围内。