3

blueimp から Jquery File Upload を試しています。ドキュメントには、アップロードするファイルの数を maxNumberOfFiles 設定で制限できるはずだと書かれています。

ただし、私の場合はうまくいかないようです。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'

add コールバックはすべてのファイルに対してトリガーされます。アップロードされるファイルの数を制限する独自のソリューションを実装しようとしても、「追加」のすべての呼び出しがいつ完了するかを知りたいです。つまり、ソリューションを実装する必要がある場合、次のようになります

  1. 各ファイルの追加イベントを待ちます。add コールバックで各ファイルをカウントするカウンターを維持する
  2. すべてのファイルに対してすべての追加イベントのトリガーがいつ完了するかを知る-- どのように???
  3. アップロードされたファイルの数を確認し、許可されている最大数を超えた場合はすべてのファイルのアップロードを防止し、最初の選択からアップロードまでファイルのサブセットを選択するように求めます。

ソリューションは純粋に画像のクライアント側であり、画像は S3 に直接アップロードされますが、トランザクションごとに 3 つ以上のアップロードを防ぐ必要があります。私が持っている現在の実装では、ユーザーが自分の画像フォルダー全体を選択して、大量の画像で S3 バケットを台無しにすることを妨げるものは何もありません。Amazon は、ポリシーで許可されている時間内にアップロードされたファイルをできるだけ多く受け取ります。

この混乱から抜け出す唯一の方法は、スケーラビリティ/パフォーマンスの問題のために必死に避けようとしているサーバーを介してすべてのアップロードをルーティングすることです。私たちは、現時点では最小限のスケーリング能力しか持たない非常に小さなスタートアップです。私が考えているもう 1 つのアイデアは、ファイルのアップロードごとに 30 秒間有効なポリシーをサーバーに要求することですが、これはやや面倒に思えます。

人々が試した/使用した他のアイデア/代替案/提案/推奨事項はありますか?

4

2 に答える 2

3

https://github.com/blueimp/jQuery-File-Upload/wiki/Optionsのドキュメントから。

注: maxNumberOfFiles オプションは、UI および AngularJS 実装によって定義される getNumberOfFiles オプションに依存します。

特に maxNumberOfFiles には、これら 2 つのうちの 1 つを含める必要があります。残りを機能させるには、fileupload-validate.js が必要です。

それ以上のものが必要な場合もあります。オプションの js ファイルをすべて含めてから、不要なものを削除することをお勧めします。

于 2013-09-09T10:19:21.270 に答える
0

ユーザー (Facebook、Google、Amazon) を認証し、各ユーザーにバケット内のサブフォルダーを割り当て、さらにアップロードを許可するかどうかを決定する前に、ユーザーがフォルダーに既に持っているファイルの数を照会する必要があると思います。

于 2013-09-06T14:33:18.323 に答える