2013-08-31 158 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文件,然后删除不需要的文件。