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

时间:2015-07-27 18:50:15

标签: angularjs twitter-bootstrap angularjs-directive input-type-file angular-file-upload

我正在使用\+使用角度js进行上传控制。每次我点击浏览,我都不想看到以前选择的文件。默认情况下,这似乎保留。可以通过编写指令来实现吗?每次点击浏览都能触发吗?

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

input type="file"

4 个答案:

答案 0 :(得分:35)

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

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

在您的控制器中

 $scope.clear = function () {
    angular.element("input[type='file']").val(null);
};

答案 1 :(得分:0)

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;
  });
}`

答案 2 :(得分:0)

如果使用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
        }
      })

答案 3 :(得分:0)

您可以轻松完成此操作,下面是一个示例:

   <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('');

       });