Jquery文件上载 - 如何限制上传的文件数

时间:2013-08-31 18:34:25

标签: file-upload amazon-s3 image-uploading jquery-file-upload

我正在试用blueimp的Jquery文件上传。文档说我应该能够使用maxNumberOfFiles设置限制要上载的文件数。

然而,在我的情况下,这似乎不起作用。其中没有其他如acceptFileTypes,loadImageMaxFileSize等似乎也在工作(可能我必须包含其他js文件? - 尽管研究了很多,但不知道哪些或者如何连接它们)。我正在使用该插件的基本版本。以下是我的代码的外观:

JS文件包括:

  1. jquery_ui_widget.js
  2. jquery_iframe_transport.js
  3. jquery_file_upload.js
  4. tmpl.js
  5. 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. 知道所有文件的所有添加事件触发完成的时间 - 如何???
    3. 查看已上传的文件数量,如果超过允许的最大数量,则阻止上传所有文件,并提示选择从初始选择到上传的文件子集。
    4. 解决方案纯粹是客户端的图像和图像直接上传到S3但我需要防止每个事务超过3次上传。根据我目前的实现,没有任何东西阻止用户选择他/她的整个图像文件夹并弄乱了大量图像的S3桶。亚马逊将采取与政策允许的时间内上传的文件数量相同的文件。

      摆脱这种混乱的唯一方法似乎是通过我们的服务器路由所有上传,我试图拼命避免由于可伸缩性/性能问题。我们是一个非常小的创业公司,目前只有极小的扩展能力。我的另一个想法是要求服务器为每个文件上传启用30秒的启用策略,这似乎相当麻烦。

      人们尝试/使用的任何其他想法/替代/建议/建议有效吗?

2 个答案:

答案 0 :(得分:3)

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

  

注意:maxNumberOfFiles选项取决于getNumberOfFiles   选项,由UI和AngularJS实现定义。

您需要特别为maxNumberOfFiles包含其中一个。 要完成其余工作,您需要fileupload-validate.js。

您可能还需要更多。我建议包括所有可选的js文件,然后删除不需要的文件。

答案 1 :(得分:0)

我认为您必须对用户(Facebook,Google,亚马逊)进行身份验证,为每个用户分配存储桶中的子文件夹,并在决定是否允许更多用户之前查询用户已在其文件夹中拥有的文件数量上传。