如何使用ng-file-upload指令清除输入文件?

时间:2014-10-03 02:00:12

标签: angularjs angularjs-directive

我是棱角分明的新手,我正在实施ng-file-upload directive。有人可以告诉我如何在上传成功后清除文件输入吗?

我已经在网上尝试过多种解决方案,而我唯一能够使其成功运作的是Jquery:input.replaceWith(input.val('').clone(true));

然而,这似乎只是通过外观清除它,如果我再次尝试提交,我仍然可以上传所谓的已清除文件。

如果有人可以帮助我,那就太好了。

2 个答案:

答案 0 :(得分:1)

这样做非常简单。

var uploadInstance = $upload.upload({
     url: 'resources/upload',
     file: $files  // for multiple files
})
progress(function (evt) {
    //progress
})
.success(function (data) {
    //Success upload
})
.error(function (data) {
    //Error upload    
});

当您想要重置uploadInstance时,只需调用

即可
uploadInstance.abort(); 

答案 1 :(得分:0)

这对我有用,但它并不是理想的解决方案:

HTML:

<form name="photosForm" ng-submit="upload(photos.file)">
  <input type="file"
         name="file"
         ngf-select
         ng-class="{'invalid': photosForm.file.$invalid}"
         ng-model="photos.file"
         required/>
  <button type="submit" ng-disabled="photosForm.$invalid"></button>
</form>

JS:

$scope.upload = function(file) {
  Upload(file).then(function() {
    $scope.photos = { file: undefined };
  }, function(err) {
    $scope.errGallery = err.data.message;
  });
}

CSS:

.invalid {
  color: red;
  border-color: red;
}

现在这对我有什么用。它将文件的名称留在文件输入中,但它不再是有效的文件,因为没有文件,它被设置为“未定义”。从某种意义上来说这是好的,即提交按钮将被禁用,并且您无法错误地上传两次相同的文件,而且“无效”#39; css类将被应用为输入是必需的,但没有文件集,它将我的输入边框和文本颜色为红色。