Loading

plupload addFile函数添加文件上传

功能描述

Excel文件上传后,先校验Excel文件内容,上传完成后,错误,确认框提示错误信息。点击确认再将文件导入系统。否则默认后台正常导入系统。

关键代码说明

//校验成功后,将文件添加到导入上传队列
uploader.addFile(file);

//uploader.start() //这里直接调用时,uploaderCheck还在运行中,因为单一实例只允许一个任务上传,会导致uploader上传失败

//设置延迟上传,等待上传校验完成,避免争用。

setTimeout(function(){
  uploader.start()
},800)

实现

点击查看代码
<div id="checkcontainer" >
<a id="importBtn" href="javascript:void(0);" class="easyui-linkbutton button-blue" style=" width: 300px;height: 26px;margin-top: 40px;" >导入登记清单</a>
</div>
<div id="upcontainer" style="display: none;">
<a id="importDjBtn" href="javascript:void(0);" class="easyui-linkbutton button-blue" style="width: 300px;height: 26px;margin-top: 40px;" >上传登记清单</a>
</div>
<script>

var uploader = new plupload.Uploader({
    runtimes : 'html5,flash,silverlight,html4',
    browse_button : 'importDjBtn', // you can pass an id...
    container: document.getElementById('upcontainer'), // ... or DOM Element itself
    url:'/importDj',
    flash_swf_url : '/assets/plupload-2.3.1/Moxie.swf',
    silverlight_xap_url : '/assets/plupload-2.3.1/Moxie.xap',
    multipart_params: {},
    filters : {
        max_file_size : '50mb',
        mime_types: [
            {title : "excle files", extensions : "xls,xlsx"}
        ]
    },

    init: {
        PostInit: function() {},
        BeforeUpload: function(up, file) {
            $.messager.progress('close');
            $.messager.progress({text:'正在导入('+file.name+')....',interval:100 });
        },
        FilesAdded: function(up, files) {
            plupload.each(files, function(file) {
                file.status = plupload.QUEUED;
            });
        },
        FileUploaded: function(uploader,file,responseObject) {
            var res = responseObject.response;

            if(res != null && res != "") {
                $.messager.alert('错误', res,'error');
            }
            else if(responseObject.status != '200') {
                alert(file.name+' 导入失败:' + responseObject.response);
            } else {
                $.messager.show({  title:'提示', msg: '导入成功!'});
            }
        },
        UploadComplete: function(up, files) {
            $.messager.progress('close');
            //清空当前队列
            uploader.files = []
            uploaderCheck.files = []
        },

        Error: function(up, err) {
            $.messager.progress('close');
            alert("\nError #" + err.code + ": " + err.message);
        }
    }
});
var uploaderCheck = new plupload.Uploader({
    runtimes : 'html5,flash,silverlight,html4',
    browse_button : 'importBtn', // you can pass an id...
    container: document.getElementById('checkcontainer'), // ... or DOM Element itself
    url :  '/chekcImportDj',
    flash_swf_url : '/assets/plupload-2.3.1/Moxie.swf',
    silverlight_xap_url : '/assets/plupload-2.3.1/Moxie.xap',
    multipart_params: {},
    filters : {
        max_file_size : '50mb',
        mime_types: [
            {title : "excle files", extensions : "xls,xlsx"}
        ]
    },

    init: {
        PostInit: function() {},
        FilesAdded: function(up, files) {
            $.messager.confirm('请确认', "确认导入当前已登记的数据。", function (r) {
                if (r) {
                    uploaderCheck.start();
                }
            });
        },
        BeforeUpload: function(up, file) {
            $.messager.progress('close');
            $.messager.progress({text:'正在导入('+file.name+')....',interval:100 });
        },
        FileUploaded: function(up,file,responseObject) {
            var res = responseObject.response;
            var resObj;
            try{
                resObj = JSON.parse(res);
            }catch(err){}
            if(res&&resObj){
                if(resObj.state == 'fail'){
                    $.messager.confirm('确认导入?',resObj.msg,function(y){
                        if (y){
                            console.log(y);
                            //将文件添加到上传队列
                            uploader.addFile(file);
                            setTimeout(function(){
                                uploader.start()
                            },800)

                        }
                    });
                }else if(resObj.state == 'ok'){
                    //将文件添加到上传队列
                    uploader.addFile(file);
                    setTimeout(function(){
                        uploader.start()
                    },800)
                }
            }else{
                if(res != null && res != '') {
                    $.messager.alert('错误', res,'error');
                }else if(responseObject.status != '200') {
                    alert(file.name+' 导入失败:' + responseObject.response);
                } else {
                    $.messager.show({  title:'提示', msg: '校验成功!'});
                }
            }
        },
        UploadComplete: function(up, files) {
            $.messager.progress('close');
        },

        Error: function(up, err) {
            $.messager.progress('close');
            alert("\nError #" + err.code + ": " + err.message);
        }
    }
});


$(function () {
    uploaderCheck.init();
    uploader.init();
});

</script>
posted @ 2025-09-05 11:04  毛豆炒肉丝  阅读(5)  评论(0)    收藏  举报