我正在尝试在发生异常时立即终止上传。 “fileuploadchunkdone”事件处理程序允许我捕获从服务器发送的每个单块的“错误”json。理想情况下,我想在发生异常时立即中止上传。我需要对每个块执行此检查,因为我需要记录错误并在发生异常时显示错误代码。但是,我无法通过调用data.jqXHR.abort()来终止异常。它只是继续经历每一块。有任何想法吗?以下是该事件处理程序的代码:
.on('fileuploadchunkdone', function (e, data) {
if (!data.result.success) {
running--;
var errMsg = "";
if (data.result != null) {
if (data.result.message != null) {
errMsg += data.result.message;
}
if (data.result.error != null)
errMsg += data.result.error;
}
layoutService.showErrorDialog(errMsg);
data.jqXHR = data.abort();
window.removeXHRfromPool(data);
if (running == 0) {
$('#dlgProgress').parent().hide();
$('#progresses').empty();
}
}
})
答案 0 :(得分:1)
如果chunk-send回调函数返回false,则中止整个上载请求。我正在添加一个自定义属性abortChunkSend
,以便从chunk-done事件发出信号,以便在下一个chunk-send事件中取消。
实施例,
.on("fileuploadchunksend", function (e, data)
{
var abortChunkSend = data.context[data.index].abortChunkSend;
if (abortChunkSend)
{
return false;
}
})
.on("fileuploadchunkdone", function (e, data)
{
if (data.result)
{
for (var index = 0; index < data.result.files.length; index++)
{
var file = data.result.files[index];
if (file.error)
{
data.context[index].abortChunkSend = true;
}
}
}
})
参考fileuploadchunksend上的blueimp文档。