blueimp から Jquery File Upload を試しています。ドキュメントには、アップロードするファイルの数を maxNumberOfFiles 設定で制限できるはずだと書かれています。
ただし、私の場合はうまくいかないようです。acceptFileTypes 、 loadImageMaxFileSize などの他のものはどれも機能していないようです (おそらく、他の js ファイルを含める必要がありますか? - かなり多くの調査にもかかわらず、どのファイルをどのように接続するのか本当にわかりません) . プラグインの基本バージョンを使用しています。私のコードは次のようになります。
含まれる JS ファイル:
- jquery_ui_widget.js
- jquery_iframe_transport.js
- jquery_file_upload.js
- 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 コールバックはすべてのファイルに対してトリガーされます。アップロードされるファイルの数を制限する独自のソリューションを実装しようとしても、「追加」のすべての呼び出しがいつ完了するかを知りたいです。つまり、ソリューションを実装する必要がある場合、次のようになります
- 各ファイルの追加イベントを待ちます。add コールバックで各ファイルをカウントするカウンターを維持する
- すべてのファイルに対してすべての追加イベントのトリガーがいつ完了するかを知る-- どのように???
- アップロードされたファイルの数を確認し、許可されている最大数を超えた場合はすべてのファイルのアップロードを防止し、最初の選択からアップロードまでファイルのサブセットを選択するように求めます。
ソリューションは純粋に画像のクライアント側であり、画像は S3 に直接アップロードされますが、トランザクションごとに 3 つ以上のアップロードを防ぐ必要があります。私が持っている現在の実装では、ユーザーが自分の画像フォルダー全体を選択して、大量の画像で S3 バケットを台無しにすることを妨げるものは何もありません。Amazon は、ポリシーで許可されている時間内にアップロードされたファイルをできるだけ多く受け取ります。
この混乱から抜け出す唯一の方法は、スケーラビリティ/パフォーマンスの問題のために必死に避けようとしているサーバーを介してすべてのアップロードをルーティングすることです。私たちは、現時点では最小限のスケーリング能力しか持たない非常に小さなスタートアップです。私が考えているもう 1 つのアイデアは、ファイルのアップロードごとに 30 秒間有効なポリシーをサーバーに要求することですが、これはやや面倒に思えます。
人々が試した/使用した他のアイデア/代替案/提案/推奨事項はありますか?