我正在使用blueimp插件实现AWS分块上传,我在事件排序中遇到了问题。
S3使用上传ID和部件号查询参数,而不是Content-Range
(存在导致Amazon立即抛出403),而是使用上传ID和部件号查询参数。
所以在每个块之前,我需要联系我的签名服务并更改下一个块的URL。
options.chunksend似乎没有像options.add一样阻止事件系统,所以我的下一个块被发送到与第一个块相同的URL(在options.add中设置),覆盖它。
如何阻止块的发送以便我可以更改网址?
答案 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。