我正在使用jquery文件上傳擴展(https://github.com/blueimp/jQuery-File-Upload/)使我的網站上傳系統。jquery文件上傳:單個文件上傳用於拖放
問題是,我不希望允許用戶通過拖放區域上傳多個文件,有沒有什麼辦法限制它,並且只允許單個文件上傳?我發現只有這樣的按鈕限制,並且wiki中沒有關於單個拖放上傳的信息。
我正在使用jquery文件上傳擴展(https://github.com/blueimp/jQuery-File-Upload/)使我的網站上傳系統。jquery文件上傳:單個文件上傳用於拖放
問題是,我不希望允許用戶通過拖放區域上傳多個文件,有沒有什麼辦法限制它,並且只允許單個文件上傳?我發現只有這樣的按鈕限制,並且wiki中沒有關於單個拖放上傳的信息。
您需要將jquery.fileupload.validate.js添加到您的網站。然後將考慮maxNumberOfFiles屬性。
您可以設置爲1
$('.something').fileupload({
dropZone : $('.your-dropzone'),
url : 'http://...',
dataType : 'json',
maxNumberOfFiles : 1
});
如果他拖動多個文件並將其刪除,那麼會怎麼考慮呢? –
maxNumberOfFiles將影響整個文件上傳計數,而不僅僅是拖放操作。 – Dazvolt
@susheel:在這種情況下,驗證會拋出一個您可以處理的錯誤。 –
復活這個問答,因爲我發現解決類似的問題,我已經需要做我自己......
的maxNumberOfFiles價值,DazVolt指出,適用於在會話中上傳的所有文件,而不僅僅是特定的上傳文件,因爲jquery.fileupload-ui.js中的這個函數基本上統計了UI中已處理(即已上傳的)表格行的數量,然後再與maxNumberOfFiles進行比較:
getNumberOfFiles: function() {
return this.filesContainer.children()
.not('.processing').length;
},
令人高興的是,雖然,getNumberOfFiles的這個定義是可以改變的......
爲了使每次上傳的工作,即它限制在每次上傳一個文件,但有多達上傳你喜歡我這樣做:
在我添加了一個類的previouslyUploaded'到模板表格行下載模板:
{% for (var i=0, file; file=o.files[i]; i++) { %} <tr class="template-download fade previouslyUploaded">
之前我定義FileUpload對象,我提出一個新的功能,通過該計數表中的行,但忽略那些已經上傳,即通過在下載模板條目所代表的那些getNumberOfFiles被稱爲:然後
var perUploadRestriction = function() {
// previouslyUploaded is a class added in template-download
// with this query here it means previously uploaded files don't count towards the max_file_upload limit
// only the files in the current upload in preparation
return this.filesContainer.children().not('.processing').not('.previouslyUploaded').length;
};
我在FileUpload對象定義使用此功能,像這樣:現在
$(this).fileupload({
dropZone: $(this),
processQueue: [{
action: 'validate',
//acceptFileTypes: *a regex object for your file types*,
maxFileSize: 5000000,
maxNumberOfFiles: 1,
}],
getNumberOfFiles: perUploadRestriction,
});
而且,如果我拖放多個文件到懸浮窗,我得到一個錯誤消息,但之後成功上載我仍然可以使莫重新上傳時有相同的限制。
這是一個黑客攻擊的一位,但適合我的目的
只是檢查被丟棄的文件的數量,並給予警告說,只允許單個文件。因爲我們無法阻止用戶拖動多個文件,所以他應該通知 –
謝謝,這會有所幫助。 – Dazvolt
不客氣... –