无法使用 plupload 将超过 2 个文件加载到 S3

Cannot load more than 2 files to S3 using plupload

只要我只加载 2 个多个文件,下面的代码就可以正常工作。如果我加载 3 个或更多,则第二个文件之后的每个文件都不会添加到我的 s3 存储桶中(尽管 plupload 没有显示错误)。

谁能明白为什么?

     var uploader = new plupload.Uploader({
     browse_button: 'browse', // this can be an id of a DOM element or the DOM element itself
     url: 'https://s3.amazonaws.com/mybucket',
     filters: {
         max_file_size: '25mb',
         prevent_duplicates: true,
         multiple_queues: true
     }
 });

 uploader.init();

 uploader.bind('FilesAdded', function (up, files) {
     plupload.each(files, function (file) {

         var myFileName = file.name.toLowerCase();
         myFileName = myFileName.replace(/[|&;$%@"<>()+,]/g, "");

         var elem = $('#hfReplyGuid');


             $.ajax({
                 type: "POST",
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 url: "WebService.asmx/prepareUpload",
                 data: "{'acl':'private','bucket':'myBucket','file':'" + folderPath + elem.val() + "_" + myFileName + "'}",
                 success: function (data) {
                     params[myFileName] = { policy: data.d[0].Policy, signature: data.d[0].Signature };

                     var multipart_params = {
                         'key': folderPath + elem.val() + "_" + myFileName,
                         'filename': folderPath + elem.val() + "_" + myFileName,
                         'AWSAccessKeyId': AWSAccessKey,
                         'acl': 'private',
                         'signature': params[myFileName]["signature"],
                         'policy': params[myFileName]["policy"],
                         'success_action_status': '201'
                     }


                     up.setOption('multipart_params', multipart_params);

                     uploader.start();
                 },
                 error: function (xhr, ajaxOptions, thrownError) {
                     alert(xhr.status);
                     alert(xhr.responseText);
                     alert(thrownError);
                 }
             });

     });

});

我通过基于此 post Upload multiple files to Amazon S3 using plupload

的代码解决了这个问题

但是我必须在 FileFiltered 事件中创建策略,在 FilesAdded 事件中启动上传程序,然后在 BeforeUpload 事件中添加每个策略,如下所示:

       var multipart_params = policies[file.id];
       up.setOption('multipart_params', multipart_params);