Jquery blueimp文件上载延迟的data.submit()的进度

Jquery blueimp文件上载延迟的data.submit()的进度,jquery,file-upload,blueimp,Jquery,File Upload,Blueimp,我有一个案例,我必须先保存表单-以获得一个id-上传的文件将与之相关 我工作得很好-但到目前为止,我还无法从data.submit()获取任何进度数据 可能吗 以下是我的代码:首先收集挂起列表中的数据对象: var pendingList = []; $('#fileupload').fileupload({ dropZone: $('#drop-area'), uploadTemplateId: null, downloadTemplateId: null, u

我有一个案例,我必须先保存表单-以获得一个id-上传的文件将与之相关

我工作得很好-但到目前为止,我还无法从
data.submit()获取任何进度数据

可能吗

以下是我的代码:首先收集挂起列表中的数据对象:

var pendingList = [];
$('#fileupload').fileupload({
    dropZone: $('#drop-area'),
    uploadTemplateId: null,
    downloadTemplateId: null,
    url: multi_upload_action,
    autoUpload: false,
    add: function (e, data)
    {
        $.each(data.files, function (index, file)
        {
            var row = $('<div class="template-upload">' +
                '<div class="table-cell">' +
                '<div class="name">' + file.name + '</div>' +
                '<div class="error"></div>' +
                '</div>' +
                '<div class="table-cell">' +
                '<div class="size">Processing...</div>' +
                '</div>' +
                '<div class="table-cell">' +
                '<div class="progress" style="width: 100px;"></div>' +
                '</div>' +
                '</div>');

            // fetching formatted size;
            var file_size = formatFileSize(file.size);

            row.find('.size').text(file_size);

            data.context = row.appendTo($(".content_upload_download"));
        });

        pendingList.push(data);
    },
    limitConcurrentUploads: 1,
    maxChunkSize: 8388000
});


问候

找到了适合我的解决方案:

  • 为添加时的每个文件创建隐藏的开始按钮
  • 提交主表格,并接收额外信息
  • 将新信息附加到fileupload实例的url
  • 循环所有开始按钮并启动单击事件
  • 在上次上载完成后重定向页面
  • sendAllFiles=函数(id)
    {
    $('#fileupload')。fileupload(
    “选项”,
    “url”,
    phpGWLink('index.php',{menuaction:'helpdesk.uitts.handle_multi_upload_file',id:id})
    );
    $.each($('.start\u file\u upload')、函数(索引、文件\u start)
    {
    文件启动。单击();
    });
    };
    $('#fileupload')。fileupload({
    dropZone:$(“#放置区域”),
    uploadTemplateId:null,
    downloadTemplateId:null,
    自动上载:false,
    添加:功能(e、数据)
    {
    $.each(data.files,函数(索引,文件)
    {
    var file_size=formatFileSize(file.size);
    data.context=$(“

    ”) .append($('').text(data.files[0].name+''+文件大小)) .appendTo($(“.content\u upload\u download”)) .append($('start')) 。单击(函数() { data.submit(); })); pendingList++; }); }, 进度:功能(e、数据) { var progress=parseInt((data.loaded/data.total)*100,10); css(“background-position-x”,100-progress+“%”); }, 完成:功能(e,数据) { 文件计数++; var result=JSON.parse(data.result); 如果(结果文件[0]。错误) { data.context .removeClass(“文件”) .addClass(“错误”) .append($('').text('Error:'+result.files[0].Error)); } 其他的 { data.context .addClass(“完成”); } 如果(文件计数===待处理列表) { window.location.href=重定向\u操作; } }, limitConcurrentUploads:1, maxChunkSize:8388000 });

    sendAllFiles = function (id, redirect_action)
    {
        var total_files = pendingList.length;
        var n = 0;
        pendingList.forEach(function (data)
        {
            data.formData = {id: id};
            data.submit()
                .done(function (data, status)
                {
                    n++;
                    $.each(data.files, function (index, file)
                    {
                        if (typeof file.error != 'undefined' && file.error)
                        {
                            alert(file.name + ': ' + file.error);
                        }
                    });
                    if (n == total_files)
                    {
                        window.location.href = redirect_action;
                    }
                });
        });
    };
    
    
        sendAllFiles = function (id)
        {
    
            $('#fileupload').fileupload(
                'option',
                'url',
                phpGWLink('index.php', {menuaction: 'helpdesk.uitts.handle_multi_upload_file', id: id})
                );
    
            $.each($('.start_file_upload'), function (index, file_start)
            {
                file_start.click();
            });
        };
    
        $('#fileupload').fileupload({
            dropZone: $('#drop-area'),
            uploadTemplateId: null,
            downloadTemplateId: null,
            autoUpload: false,
            add: function (e, data)
            {
                $.each(data.files, function (index, file)
                {
                    var file_size = formatFileSize(file.size);
    
                    data.context = $('<p class="file">')
                        .append($('<span>').text(data.files[0].name + ' ' + file_size))
                        .appendTo($(".content_upload_download"))
                        .append($('<button type="button" class="start_file_upload" style="display:none">start</button>')
                            .click(function ()
                            {
                                data.submit();
                            }));
    
                    pendingList++;
    
                });
    
            },
            progress: function (e, data)
            {
                var progress = parseInt((data.loaded / data.total) * 100, 10);
                data.context.css("background-position-x", 100 - progress + "%");
            },
            done: function (e, data)
            {
                file_count++;
    
                var result = JSON.parse(data.result);
    
                if (result.files[0].error)
                {
                    data.context
                        .removeClass("file")
                        .addClass("error")
                        .append($('<span>').text(' Error: ' + result.files[0].error));
                }
                else
                {
                    data.context
                        .addClass("done");
                }
    
                if (file_count === pendingList)
                {
                    window.location.href = redirect_action;
                }
    
            },
            limitConcurrentUploads: 1,
            maxChunkSize: 8388000
        });