2013-10-14 31 views
3

我的設置如下:重置文件選擇

singleFileUploads: false, 
    // To limit the number of files uploaded with one XHR request, 
    // set the following option to an integer greater than 0: 
    limitMultiFileUploads: undefined, 
    maxNumberOfFiles: 1, 

我試圖讓我的客戶端上傳個人形象,成功後上傳這個圖片, 我會喜歡重置文件選擇,並允許我的用戶上傳另一張圖片,而不是第一張圖片。

在將maxNumberOfFiles設置爲1之前,插件只是試圖上傳用戶可以選擇的新文件以及舊文件,現在,它允許用戶在每次訪問頁面時只上傳一次文件其中包含插件實例。

這是我到目前爲止已經試過:

$scope.model.resetFiles = function(){ 
    angular.forEach(
     angular.element("input[type='file']"), 
     function(inputElem){ 
      // angular.element(inputElem).val(null); 
      angular.element(inputElem).find('.files').empty();  
     angular.element(inputElem).scope().clear() 
    }); 
} 

回答

1

出於安全考慮,使用Javascript不允許你清除,你會覺得的方式文件中的字段。看起來好像創建一個新的元素並替換舊的文件字段將會實現這一點。查看this link瞭解更多細節和代碼示例。

我見過一些人建議包裹在<form>標籤的元素和使用jQuery的reset()功能重形式,但如果你沒有使用完整版的jQu​​ery的,我不相信這是包含在AngularJS默認使用的jqLit​​e。

+0

這是一個AngularJS上傳插件,我不認爲這可能是一個解決方案,對不起。 謝謝您的迴應 –

+0

沒問題。我目前正在爲我的AngularJS應用程序進行一些文件上傳,所以如果我看到其他在Angular中有效的東西,我會告訴你。 –

+0

使用FormData對象與'未定義'的內容類型標題應該做的伎倆,除非你需要一個回退IE <10 –

1

我發現了一個臨時解決方案,直到插件得到更新以獲得更好的角度支持。

var filePicker = null; 

$scope.options = { 
    done: function (e, data) { 
     filePicker = data; 
    } 
}; 

$scope.clearFiles = function() { 
    filePicker.scope.clear(filePicker.files); 
}; 

只需添加的選項,該指令是這樣的:

<form file-upload="options" action="import/excelupload" method="POST" enctype="multipart/form-data"> 
+0

似乎工作,但該插件沒有缺乏良好的角度支持。 –

0

如果文件字段被包裹形式標記內,然後使用標準的HTML形式的復位按鈕的類型。

<button type="reset" value="Reset">Reset</button> 

此外,您可以在重置按鈕上執行ng-click指令來執行$ scope中的任何更改。

<button type="reset" value="Reset" ng-click="formReset()">Reset</button> 

$scope.resetForm = function(){ 

    // Your business logic after form reset. 

}