我有要求允許用戶選擇要上傳的文件,然後需要從用戶那裏捕獲適用於該特定文件的額外必需信息在上傳時將作爲參數發送給服務器。Fine-Uploader如何爲每個文件捕獲額外的參數,同時仍然允許多個文件
到目前爲止,我一直在做這個工作,通過精確的上傳器onSubmit回調和顯示一個模式與我需要的輸入。如果輸入通過驗證,我將存儲文件ID和相關的參數,否則,如果他們關閉/取消模式,我將調用罰款上傳器取消API並取消具有給定ID的文件。
用戶可以多次執行此操作,將文件隊列到標準的上傳器列表中,然後按「上傳」實際上同時啓動上傳。
所有這一切都很好,我的問題是,因爲我已啓用「多個」選項,用戶可以同時選擇或拖動多個文件,但我需要分別向他們提供模式。 onSubmit事件是針對每個文件單獨觸發的,因此如何防止第二,第三等模態打開,直到我取消或保存前一個文件?
對於記錄,我實際上使用Backbone/Marionette並觸發每個onSubmit回調的「file:added」事件。這是我創建模態視圖並顯示它的地方,但是,該解決方案不需要與主幹綁定。另外,如果有一個更好的方法來使用fine-uploader爲一個文件收集參數,我不一定要綁定到這種方法 - 只需要確保每個文件都具有填充的額外數據,否則它不能被上傳。
這裏是精細上傳的onsubmit回調:
.on('submit', function(event, id, name) {
var args = {};
args.id = id;
args.fileName = name;
uploadDocsVent.trigger('file:added', args);
})
這裏是我的代碼,監聽該事件,創建一個文件骨幹模型,以及實例顯示在一個模式的區域的圖。
uploadDocsVent.on("file:added", function(args){
var file = new UploadDocuments.File(args);
var addlInfoView = new UploadDocuments.Views.FileInfo({
model: file,
categories: App.uploadedFilesCategories
});
App.appLayout.modalConfirmRegion.show(addlInfoView);
});
在我看來,我有這樣的代碼響應模式點擊:
onDialogPrimaryClicked: function() {
UploadDocuments.claimsUploadWidget.addFileWithInfo(this.model);
this.trigger("dialog:close");
},
onDialogSecondaryClicked: function() {
UploadDocuments.uploadView.uploader.fineUploader('cancel', this.model.get('id'));
this.trigger("dialog:close");
}
提前感謝對如何處理/解決這個問題的任何想法。
我最近對於想要在每個提交的文件旁邊放置文本字段的用戶回答了一個類似的問題。也許這種方法會更好?讓我知道這是否可以幫助你。如果沒有,請讓我知道,我們會從那裏開始。 http://stackoverflow.com/questions/16026176/add-field-for-each-file-in-fine-uploader – 2013-04-23 14:51:57
謝謝雷。我一定會看一看,看看這種方法是否可以在我們的設計中發揮作用。附:感謝您在插件上的工作,它非常出色! – 2013-04-23 14:59:09
我給了這個嘗試,我認爲這不會在我們的情況下。我們必須爲每個文件提供2個選擇輸入和一個文本輸入,並且UI開始顯得非常忙碌,尤其是考慮到框架,文件名,動作鏈接,消息等已經存在的其他UI元素時。我認爲我現在的選擇是找出延遲模式或者關閉多個模式的方法。思考? – 2013-04-23 18:11:08