批量下载文件控件

一、功能性需求和非功能性需求:

支持文件批量下载。不要java实现,需要在web中实现。

B/S模式,非C/S模式。

服务器不需要打包。

使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中。

支持大文件断点下载。比如下载10G的文件。

PC端全平台支持。Windows,macOS,Linux

全浏览器支持。ie6,ie7,ie8,ie9,ie10,ie11,edge,firefox,chrome,safari

支持文件夹结构下载。不希望在服务器打包,而是直接下载文件夹,下载后在本地文件夹结构和服务器保持一致。

 

//批量下载文件(打包)

function button_downloadplus(url) {

var rows = $('#exampleTableEvents').bootstrapTable('getSelections');    //返回所有选择的行,当没有选择的记录时,返回一个空数组

var $table = $("#exampleTableEvents");

 

//alert("进入reload"); 

//return; 

if (rows.length == 0) { 

alert("请选择要下载的数据", "error"); 

return; 

};

var title = "您确定要下载选定的"  + rows.length + "个文件及文件夹吗"

            swal({

                title: title,

                text: "此下载占用系统资源,请勿频繁操作!",

                type: "warning",

                showCancelButton: true,

                confirmButtonColor: "#DD6B55",

                confirmButtonText: "是的,我要下载!",

                cancelButtonText: "让我再考虑一下…",

                closeOnConfirm: false,

                closeOnCancel: false

            }, function (isConfirm) {

                if (isConfirm) {

post_url = url + "&time=" + new Date().getTime(); 

var ids = ''; 

//遍历所有选择的行数据,取每条数据对应的ID 

$.each(rows, function(i, row) {

var file_type = 2;

if(row['file_type']=='文件夹'){

file_type = 1;

}

ids = ids + '{"id":' + row['id'] + ',"file_type":' + file_type +'};';

});

console.log(ids);

if(ids!=''){

ids = ids.slice(0,ids.length-1);}

//定义ajax请求参数 

var param = {ids:ids};

console.log(param);

swal.close();

$("#loadingModal").modal('show');

$.dynamicSubmit(post_url,param);

$("#loadingModal").modal('hide');   //**********************分2步走,先服务器POST提交服务器打包文件,打包完成返回参数给客户端在下载打包后的值

} else {

swal("已取消", "您取消了删除操作!", "error")

}

            })

}

 

/*

 * 动态构建一个Form 并且提交

*/

$.dynamicSubmit = function (url, datas) {

 

 

    var form = $('#dynamicForm');

 

 

    if (form.length <= 0) {

        form = $("<form>");

        form.attr('id', 'dynamicForm');

        form.attr('style', 'display:none');

        form.attr('target', '');

        form.attr('method', 'post');

 

 

        $('body').append(form);

    }

 

 

    form = $('#dynamicForm');

    form.attr('action', url);

    form.empty();

 

 

    if (datas && typeof (datas) == 'object') {

        for (var item in datas) {

            var $_input = $('<input>');

            $_input.attr('type', 'hidden');

            $_input.attr('name', item);

            $_input.val(datas[item]);

 

 

            $_input.appendTo(form);

        }

    }

 

 

    form.submit();

}

网上例子:http://blog.ncmem.com/wordpress/2019/08/28/java批量下载/

 

由于OA系统是基于WEB方式的,如果只判断用户是否点击“下载文件”,就来判断用户是否成功下载文件。这种方式很显然行不通,怎么办呢?我想到的就是用一控件,然后用回调事件来处理数据库方面的问题(下载记录问题) 有兴趣的朋友可在 http://www.interdrp.com/ 下载分销系统 用测试帐号进系统后,点测试程序,再点WEB下载 可以看见效果 https://www.interdrp.com/software/ReYoWebDownLoad.zip(点击下载控件) API说明 ReYoWebDL.copyright="锐洋软件拥有版权 http://www.interdrp.com/" //必须 ReYoWebDL.url="http://dl.baofeng.com/storm3/Storm2009-0504-1.exe" //下载文件的路径 ReYoWebDL.path ="" //保存文件地址 ReYoWebDL.ReYoStartDownload() //下载动作 ReYoWebDL.ReYoStopDownload() //停止下载 ReYoWebDL.size //下载文件大小 ReYoWebDL.bytes//已下载大小 ReYoWebDL.speed //下载速度 KB/S ReYoWebDL.done //下载是否完成 ReYoWebDL.cancle=true; //是否取消下载 ReYoWebDL.urlsource //下载文件名 ReYoWebDL.percent //下载百分比 升级提示: 20090506:新增剩余时间,下载百分比进度,下载速度及文件保存位置显示;且支持断点续传功能。 20090504:新增下载过程序取消下载动作。 20090502:新增文件存在提示。 目前控件支持两种方式下载: 1:开发者在程序中指定下载文件的url,保存文件的path。例如:download("http://www.interdrp.com/software/hotel/setup.zip","c:\a.zip" 2:开发者在程序中指定下载文件的url,不指定保存文件的path,系统会提示您选择保存文件的路径。例如:download("http://www.interdrp.com/software/hotel/setup.zip",""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值