【问题标题】:How to remove file from the queue to stop upload before upload starts in blueimp Basic?如何在 blueimp Basic 中开始上传之前从队列中删除文件以停止上传?
【发布时间】:2013-08-18 13:03:14
【问题描述】:

事情是这样的,

我想要在 Basic 中类似于 Basic plus UI 或 jQuery UI 的取消按钮。这个问题对你来说可能看起来很傻。但实际上我从模板中混淆了 blueimp 在 Basic plus UI 或 jQuery UI 中使用的模板来列出上传和下载的文件以及开始、删除和取消按钮。

在这里编辑 1: 即使我不能使用该模板,因为我正在使用 twig 模板,它具有相似的语法,如果我使用它会给出错误。

我需要代码来从队列中删除文件并在上传开始之前阻止上传。

我搜索到 _cancelHandler 在 jquery.fileupload-ui.js 中,但有很多功能让我感到困惑。

请人帮忙。

即使我在文档中阅读了插件的基本用法(最小设置指南),但没有数据可以取消按钮。

在这里编辑 2: 我想我错过了告诉我只需要一个上传按钮,它会上传队列中的所有文件。如果列表中的任何文件被取消,则不应上传。

这是我的代码

$(function () {

    var cancel_btn = $('<button/>')
    .addClass('btn btn-warning cancel pull-right')
    .html('<i class="icon-ban-circle icon-white"></i><span> Cancel')
    .on('click', function () {
    var $this = $(this),
        data = $this.data();
        $(this).parents('tr').remove();

        alert("code to remove from the queue and to prevent upload before upload start");
    });

    var delete_btn = $('<button/>')
    .addClass('btn btn-danger cancel pull-right')
    .html('<i class="icon-ban-circle icon-white"></i><span> Delete')
    .on('click', function () {
        alert('code needed to delete file');
    });    

    $('#fileupload').fileupload({
        dataType: 'json',
        autoUpload: false,
        add: function (e, data) {

            console.log(data);
           // data.context = $('<div/>').appendTo('#files');
            $.each(data.files, function (index, file) {

                var tr = document.createElement('tr');
                var td1 = document.createElement('td');
                var td2 = document.createElement('td');
                var td3 = document.createElement('td');
                $(td1).append(file.name);
                $(td2).append(file.size);
                $(td3).append(cancel_btn.clone(true).data(data));
                $(tr).append(td1,td2,td3);
                $('#files_list tbody').append(tr);

                var size = $('#files_list tbody tr').size();
                if(size < 1 )
                    $('#files_list').addClass('hide');
                else
                    $('#files_list').removeClass('hide');
            });

            $('#submit').click(function (){
                //data.context = $('<p/>').text('Uploading...').replaceAll($(this));
                data.submit();
                $('#files_list tbody').html('');
            });
        },
        done: function (e, data) {

            $.each(data.result.files, function (index, file) {
                var tr = document.createElement('tr');
                var td1 = document.createElement('td');
                var td2 = document.createElement('td');
                var td3 = document.createElement('td');
                $(td1).append(file.name);
                $(td2).append(file.size);
                $(td3).append(delete_btn.clone(true).data(data));
                $(tr).append(td1,td2,td3);
                $('#files_list tbody').append(tr);
            });
        },
        fail: function (e, data) {
            //console.log(data.result);
            $.each(data.result.files, function (index, file) {
                var error = $('<span/>').text(file.error);
                $(data.context.children()[index])
                    .append('<br>')
                    .append(error);
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('#progress .bar').css(
                'width',
                progress + '%'
            );
        }        
    });
});

【问题讨论】:

    标签: jquery blueimp


    【解决方案1】:

    您可以为每个文件添加“上传”和“取消”按钮,并在这些按钮上绑定提交功能。

    var cancel_btn = $('<button/>')
        .addClass('btn btn-warning cancel pull-right')
        .html('<i class="icon-ban-circle icon-white"></i><span> Cancel')
    var upload_btn = $('<button/>')
        .addClass('btn btn-warning upload pull-right')
        .html('<i class="icon-ban-circle icon-white"></i><span> Upload')
        });
     $('#submit').on('click',function(){
         $('.upload').click() //click upload buttons and upload all files in the queue
     })
     $('#cancel').on('click',function(){
         $('.cancel').click() //click cancel buttons and remove all files in the queue
     })
     .......
     $('#files_list tbody').append(tr);
     $(td4).append(upload_btn.clone(true).data(data));
     $('.upload').eq(-1).on('click',function(){//button to upload only this file
          data.submit();
     })
     $('.cancel').eq(-1).on('click',function(){
          $(this).parent().parent().remove()//or something like this, 
                                            //delete the whole <tr> 
                                            //and remove the file from the queue
     })
    

    【讨论】:

    • 如果你只想要一个按钮,隐藏.upload按钮
    • 但是你给我的答案,并没有完全满足我的要求。 :(
    • 如果你愿意,我们可以在聊天中交谈,因为我认为我的回答如你所愿chat.stackexchange.com/rooms/10158/blueimp
    • 谢谢你!浪费了半天时间试图弄清楚如何修改要上传的文件的数组。
    • 因此,如果我正确地遵循了这一点,就没有办法从“全部提交”按钮中解除单击事件的绑定吗?所以我们有点作弊,让“提交全部”按钮点击每个单独的“上传”按钮?然后我们只需删除“上传”按钮即可将文件从队列中删除?
    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2015-01-29
    • 1970-01-01
    • 2021-02-15
    相关资源
    最近更新 更多