blueimp Jquery上传插件:上次文件进度达到100%与完成事件之间存在较大差距

时间:2015-03-26 11:47:14

标签: php jquery file-upload progress-bar blueimp

所有人都在问同样的问题,在所有主题和论坛的任何地方都没有答案。

$('#fileupload').fileupload({
    dropZone: $("#dragandrop"),
    pasteZone: $("#dragandrop"),
    //singleFileUploads: false,
    //progressInterval:50,
    //bitrateInterval:500,
    //forceIframeTransport: true,
    dataType: 'json',
    add: function (e, data) {
        data.submit();
    },
    progress: function (e, data) {
            //if (data.loaded == data.total ) {
            //    if (e.lengthComputable) {
            var progress = parseInt(data._progress.loaded / data.total * 100, 10);
            console.log(data.loaded + " " + data.total + " " + data.bitrate);
            $('#progress .bar').css('width', progress + '%');
        //}
    },
    always: function (e, data) {
        $('#progress .progress-bar').css('width',0);
    },
    done: function (e, data) {
        var result = data.result.data;
        //add the flash success message
        $('#trust-center-flash-message').html(result.message);
        //add the new images to the preview
        previewImages(result.attachments);
        return alert("done");
    }
});

我尝试了互联网上的所有解决方案。 我没有使用插件后端php类。

1 个答案:

答案 0 :(得分:1)

作为Kevin B says it,正如您自己提到的那样:

  

进度事件仅跟踪上传的进度,而不是跟踪   请求的进展。

解决此问题的一种方法是更新我们对进度事件的响应方式。

  

一个解决方案是让你的进度条停止,然后90%   在完成的回调中将其提升到100%。只需将data.total乘以   1.1

    progress: function (e, data) {
        var progress = parseInt(data.loaded / (data.total*1.1) * 100, 10);
        var bar = data.context.children().children(".progress");
        $(bar).css("width", progress + "%");
    },

你也可以为活动做这件事" progressall"取决于您要修改的那个。

对于所有回调see the API,以下是一些可能会引起您兴趣的回复

  

$('#文件上传')
  ...
  .bind(' fileuploadprogress',功能(e,数据){/ * ... /})
  .bind(' fileuploadprogressall',功能(e,数据){/
... /})
  .bind(' fileuploadchunkdone',功能(e,数据){/
... /})
  ...
  .bind(' fileuploadprocessdone',function(e,data){/
... * /}}