2013-08-31 186 views
3

我正在嘗試從blueimp上傳jquery文件。文檔說我應該能夠通過maxNumberOfFiles設置限制要上傳的文件數量。jquery文件上傳 - 如何限制上傳的文件數

然而,這似乎並不在我的情況是工作。沒有其他的如acceptFileTypes,loadImageMaxFileSize等似乎也在工作(可能我必須包含其他js文件? - 不知道真的有哪些或如何掛鉤,儘管研究相當多)。我正在使用插件的基本版本。這裏是我的代碼的外觀:

JS文件包括:

  1. jquery_ui_widget.js
  2. jquery_iframe_transport.js
  3. jquery_file_upload.js
  4. tmpl.js

的JS代碼:

$('#fileupload').fileupload 
    maxFileSize: 3 * 1024 
    minFileSize: 1 
    maxNumberOfFiles: maxFilesAllowed 
    autoUpload: false 
    loadImageMaxFileSize: 3 * 1024 
    acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i 
    add: (e, data) => 
    console.log 'add callback triggered' 

爲每個文件觸發添加回調。即使我嘗試實施我自己的解決方案來限制上傳文件的數量,我希望能夠知道何時所有的「添加」調用都完成了。換句話說,如果我必須實施解決方案,它看起來像

  1. 等待每個文件的添加事件。維護一個計數器來計算的附加回調每個文件
  2. 知道什麼時候添加的所有事件觸發是完整的ALL文件 - 如何???
  3. 看看有多少文件被上傳並阻止所有文件上傳如果超過最大允許數量,並提示選擇從最初的選擇要上傳的文件的一個子集。

該解決方案純粹是客戶端的圖像和圖像直接上傳到S3,但我需要防止每次交易超過3上傳。在目前的實現中,沒有任何東西可以阻止用戶選擇他/她的整個圖像文件夾,並用大量圖像搞亂S3存儲桶。亞馬遜將在策略允許的時間內採用與上傳文件數量相同的文件。

出這種亂七八糟的唯一方法似乎是借道我們的服務器的所有上傳內容,我正在試圖拼命避免由於可伸縮性/性能問題。我們是一個非常小的初創公司,目前只有極小的擴展能力。我的另一個想法是要求服務器爲每個文件上傳30秒啓用策略,這似乎相當麻煩。

任何其他的想法/替代品/建議/人試圖建議/使用的工作?

回答

0

我認爲你將不得不認證用戶(Facebook,谷歌,亞馬遜),爲每個用戶分配一個子文件夾在你的水桶,和查詢文件的用戶已經擁有自己的文件夾中的數量決定是否允許任何前更多上傳。

4

https://github.com/blueimp/jQuery-File-Upload/wiki/Options的文檔。

注意:maxNumberOfFiles選項依賴於getNumberOfFiles 選項,這是由用戶界面和AngularJS實現定義。

您需要特別爲maxNumberOfFiles包含其中的一個。 爲了讓剩下的工作,你將需要fileupload-validate.js。

您可能還需要更多。我建議包括所有可選的js文件,然後刪除不需要的文件。