使用onchange事件上传文件

时间:2018-03-09 10:32:59

标签: javascript jquery angularjs

我正在使用on change event处理文件上传。未定义错误文件。

   //html file
   <input type="file" style="display: none;" onchange="angular.element(this).scope().uploadedFile(this)"> 

   //controller file
   $scope.file={};
   $scope.uploadedFile=function(event,args){
   $scope.files=[];
   $scope.$apply(function () {      
        $scope.files.push(args.file);     
        $scope.file=$scope.files[0];
        $scope.load(args.contents);
    });
  });

3 个答案:

答案 0 :(得分:0)

Angular似乎不支持<input type="file"..../>.的绑定。好像你必须在这里创建一个指令......详细信息。您也可以尝试这个库

AngularJs: How to check for changes in file input fields?

请参考文件上传库: https://github.com/danialfarid/ng-file-upload

答案 1 :(得分:0)

使用onchnage功能

对Html代码进行示例
<input type="file" id="f" accept=".txt,.csv,.jmx " multiple="" onchange="angular.element(this).scope().getFileDetails(this);this.value=null;">

javsacript代码获取文件数据

 $scope.files = [];
      $scope.getFileDetails = function(e) {
        $scope.$apply(function() {
          for (var i = 0; i < e.files.length; i++) {
            var isFileAvailable = false;
            console.log("File Name  " + e.files[i].name);
            for (var j = 0; j < $scope.files.length; j++) {
              if ($scope.files[j].name === e.files[i].name) {
                isFileAvailable = true;
                break;
              }
            }
            if (!isFileAvailable) {
              $scope.files.push(e.files[i]);
            } else {
              alert("file is already available ::" + e.files[i].name)
            }
          }
        });
      }

@refer link:https://stackoverflow.com/a/46708678/7256477

答案 2 :(得分:0)

  1. 您无需将事件传递给uploadedFile函数。
  2. 应该是args.files而不是args.file。
  3. // html文件

         <input type="file" style="display: none;" onchange="angular.element(this).scope().uploadedFile(this)"> 
    

    //控制器文件

      $scope.file={};
      $scope.uploadedFile=function(args){
      $scope.files=[];
      $scope.$apply(function () {      
        $scope.files.push(args.files);     
        $scope.file=$scope.files[0];
        $scope.load(args.contents);
    });
    

    });