Angular js 输入类型文件 - 清除之前选择的文件

Angular js Input type file - clear previously selected file

我使用 input type="file" 使用 angular js 进行上传控制。每次单击浏览时,我都不想看到之前选择的文件。默认情况下,这似乎被保留。是否可以通过编写指令来实现?每次点击浏览都能触发吗?

我正在使用 bootstrap 实现来替换默认的浏览按钮。

 <span class="useBootstrap btn btn-default btn-file">
                Browse <input type="file"  />
            </span>

这是最简单的方法,无需使用任何指令或复杂代码。

Browse <input type="file" ng-click="clear()" 

在你的控制器中

 $scope.clear = function () {
    angular.element("input[type='file']").val(null);
};
here is alternate way to clear input file type. 
HTML ->>
`<span class="useBootstrap btn btn-default btn-file">
   Browse <input type="file" ng-if="clearBtn" />
</span>`

Js ->>

`//initial loading
$scope.clearBtn = true;
// after submit / on reset function
$scope.submitform = function(){
//submit logic goes here;
//onsuccess function
$scope.clearBtn = false;
  $timeout(function(){
    $scope.clearBtn = true;
  });
}`

如果我们使用fileUpload指令,那么我们可以直接从HTML清除上传的文件数据。

e:g-

指令-

app.directive('fileModel', ['$parse', function ($parse) {
  return {
    restrict: 'A',
    link: function (scope, element, attrs) {
      var model = $parse(attrs.fileModel)
      var modelSetter = model.assign
      element.bind('change', function () {
        scope.$apply(function () {
          modelSetter(scope, element[0].files[0])
        })
  })
}

} }])

html代码-上传文件输入框

<button ng-disabled="!myFile" class="btn btn-primary btn-rounded btn-ef btn-        
ef-5 btn-ef-5a mb-10 "
ng-click="uploadFile(myFile);myFile=''">Upload button
</button>

<button class="btn btn-danger btn-rounded btn-ef btn-ef-5 btn-ef-5a mb-10 "
ng-click="myFile=''">Clear
</button>

调用 http 服务

  var fd = new FormData()
   fd.append('file', file) //File is from uploadFile(myFile)

   $http.post(url, fd, {
        transformRequest: angular.identity,
        headers: {
          'Content-Type': undefined,
          'sessionId': sessionId,
          'project': userProject
        }
      })

你可以很容易做到,这里有一个例子:

   <input type="file" accept="image/jpeg" id="fileInp" required file-input="files" >

//在我的代码中,其余的发生在服务器发送响应时

  $http.post('upload.php', form_data,
       {

            transformRequest: angular.identity,
            headers: {'Content-Type': undefined,'Process-Data': false}
       }).success(function(response){
        $scope.response_msg=response;
           if($scope.response_msg=="File Uploaded Successfully")
           {
            $scope.IsVisibleSuccess = $scope.IsVisibleSuccess = true;
           }
           else
           {
            $scope.IsVisibleFailed=$scope.IsVisibleFailed=true;
           }


                  $scope.img_name='';


                 $("input[type='file']").val('');

       });