2013-04-23 34 views
1

我有要求允許用戶選擇要上傳的文件,然後需要從用戶那裏捕獲適用於該特定文件的額外必需信息在上傳時將作爲參數發送給服務器。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"); 
} 

提前感謝對如何處理/解決這個問題的任何想法。

+0

我最近對於想要在每個提交的文件旁邊放置文本字段的用戶回答了一個類似的問題。也許這種方法會更好?讓我知道這是否可以幫助你。如果沒有,請讓我知道,我們會從那裏開始。 http://stackoverflow.com/questions/16026176/add-field-for-each-file-in-fine-uploader – 2013-04-23 14:51:57

+0

謝謝雷。我一定會看一看,看看這種方法是否可以在我們的設計中發揮作用。附:感謝您在插件上的工作,它非常出色! – 2013-04-23 14:59:09

+0

我給了這個嘗試,我認爲這不會在我們的情況下。我們必須爲每個文件提供2個選擇輸入和一個文本輸入,並且UI開始顯得非常忙碌,尤其是考慮到框架,文件名,動作鏈接,消息等已經存在的其他UI元素時。我認爲我現在的選擇是找出延遲模式或者關閉多個模式的方法。思考? – 2013-04-23 18:11:08

回答

0

安德魯 - 我想我知道你在做什麼。很明顯,只要Fine Uploader只在用戶提交了onSubmit處理程序中該文件的顯示模式信息後才能處理一批選定文件中的文件。你正在尋找的是一種在你的onSubmit處理程序中返回承諾或「延遲」的方法。一旦用戶提交了相關聯的模式,這將允許您返回Fine Uploader(並說「繼續,上傳/提交此文件並繼續下一個」)。

我已經創建了一個qq.Promise「class」,它實現了promise pattern。 Fine Uploader目前僅在onPasteReceived回調中將承諾視爲有效返回值。將其作爲其他回調的有效返回值(如onSubmit)可能是有意義的。這將允許您推遲上傳/提交文件,直到用戶處理相關聯的模式。由於Fine Uploader在「單文件模式」下的功能,將multiple選項設置爲「false」現在可能不是您想要的選項。

我認爲允許在某些回調中返回承諾(比如這個)以允許用戶交互可能很有價值。您可以在Github項目中請求open up a feature request嗎?在那裏,我們可以多討論一下,並且可以跟蹤我放入庫中的任何相關更改的進度。

+0

我已經提前在GitHub上打開了以下功能請求。 [鏈接](https://github.com/Widen/fine-uploader/issues/805) – 2013-04-24 00:23:51

相關問題