我用这种方式上传文件:
<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;。
答案 0 :(得分:3)
上传图片文件时遇到了同样的问题。它在IE10及更高版本中运行良好。 任何低于10的版本,文件上传都不起作用。请参阅此链接
IE9Issue:File Upload using AngularJS
答案 1 :(得分:2)
答案 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
})
在范围内。