在AngularJS控制器中将文件添加到$scope

在AngularJS控制器中将文件添加到$scope,angularjs,angularjs-scope,multipartform-data,form-data,Angularjs,Angularjs Scope,Multipartform Data,Form Data,我有以下输入元素:  <div class="form-group">     <label>Attach BOL Document</label>        <input name="file" type="file" class="form-control" onchange="angular.element(this).scope().uploadFile(this.files)" />  </div>

我有以下输入元素:

 <div class="form-group">
        <label>Attach BOL Document</label>
           <input name="file" type="file" class="form-control" onchange="angular.element(this).scope().uploadFile(this.files)" />
     </div>
我定义了以下函数,在输入元素发生更改时触发,如上所示:

 $scope.uploadFile = function (files) {
    console.log(files[0]);
    $scope.fd.append("file", files[0]);
    console.log($scope.fd);

};
第一个console.log按照我的预期输出文件对象,因此我知道该对象正在传递到我的$scope中。问题是第二个console.log输出的FormData对象为空。文件对象未被追加

我想这可能与我在UploadFIle函数外声明$scope.fd有关,但即使在函数内声明它也不起作用


为什么?

我知道这里发生了什么。这和AngularJs一点关系都没有。无法检查添加到FormData对象的键。参考此问题


这真的很臭。。。因此,在我准备好服务器端代码并发布数据之前,我无法判断文件是否真的被追加了。我觉得这是肯定的,但我不能证实这一点

它是否没有被追加或没有反映在视图中?因为您没有执行
$scope.$apply()
onchange
中的时髦引用是什么?我知道,在这个示例中没有任何理由使用
angular.element
?我认为它没有被追加,因为我在JavaScript控制台的console.log语句中看到了空的FormData对象。我没有尝试使用此值更新视图,它将通过$http提交到服务器。onchange的“funky”引用是因为在输入类型“file”中不支持ng模型。请参阅本帖:
 $scope.uploadFile = function (files) {
    console.log(files[0]);
    $scope.fd.append("file", files[0]);
    console.log($scope.fd);

};