3

我正在尝试从 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

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. 查看上传了多少文件,如果超过允许的最大数量,则阻止所有文件的上传,并提示从初始选择中选择文件子集以进行上传。

该解决方案是纯粹的图像客户端,图像直接上传到 S3,但我需要防止每个事务超过 3 次上传。使用我目前的实现,没有什么可以阻止用户选择他/她的整个图像文件夹并用大量图像弄乱 S3 存储桶。亚马逊将在政策允许的时间内接收尽可能多的文件。

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

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

4

2 回答 2

3

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

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

您将需要专门为 maxNumberOfFiles 包括这两个之一。要让其余部分正常工作,您将需要 fileupload-validate.js。

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

于 2013-09-09T10:19:21.270 回答
0

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

于 2013-09-06T14:33:18.323 回答