使用blueimp.fileupload进行s3 chunked上传

时间:2015-05-31 13:22:19

标签: amazon-web-services file-upload amazon-s3 blueimp

我正在使用blueimp插件实现AWS分块上传,我在事件排序中遇到了问题。

S3使用上传ID和部件号查询参数,而不是Content-Range(存在导致Amazon立即抛出403),而是使用上传ID和部件号查询参数。

所以在每个块之前,我需要联系我的签名服务并更改下一个块的URL。

options.chunksend似乎没有像options.add一样阻止事件系统,所以我的下一个块被发送到与第一个块相同的URL(在options.add中设置),覆盖它。

如何阻止块的发送以便我可以更改网址?

1 个答案:

答案 0 :(得分:0)

chunksend事件和上传块的调用是同步的。我覆盖了https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js的这一部分:

            that._initProgressListener(o);
            jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) ||
                    that._getXHRPromise(false, o.context))
                .done(function (result, textStatus, jqXHR) {

            that._initProgressListener(o);
              o.uploadPromise = $.Deferred();
              that._trigger('chunksend', null, o);
              o.uploadPromise.done(function() {
                  jqXHR = ((that._trigger('stillneeded', null, o) !== false && $.ajax(o)) ||
                          that._getXHRPromise(false, o.context))
                      .done(function (result, textStatus, jqXHR) {

然后在我的chunksend事件处理程序中解析promise。