h5批量下载文件

摘要:
使用JS实现批量下载,并提供从指定url下载文件并保存在本地指定路径的接口。Ie6,ie7,ie8,ie9,ie10,ie11,edge,firefox,chrome,safari支持文件夹结构下载。您不想在服务器上打包,而是直接下载文件夹。下载后,本地文件夹结构与服务器//Batch downloading Files(Packaging)functionbutton_Downloadplus{varrows=$.bootstrapTable;//一致。返回所有选定的行。如果没有选定的记录,则返回一个空数组var$table=$;//alert;//return;if{alert;return;}返回;Vartitle=“您确定要下载选定的”+rows Length+“文件和文件夹吗?”swal({title:title,text:“此下载占用系统资源,请不要频繁操作!”,类型:“warning”,showCancelButton:true,confirmButtonColor:“#DD6B55”,confirmButton文本:“Yes,I want to download!

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

支持文件批量下载。不要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批量下载/

免责声明:文章转载自《h5批量下载文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇求组合数 C(n,m)【Golang笔记】Golang工具包Cobra安装记录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JQ监听滚动条高度

JQ监听滚动条高度 $(document).scroll(function() { var scroH = $(document).scrollTop(); //滚动高度 var viewH = $(window).height(); //可见高度 var contentH = $(document).height(); /...

shell-基础2-字符串文本处理${}

一、为什么使用${}引用变量   1、$a和${a}的效果与区别     因为个别特殊字符会影响正常引用,所以需要使用${}引用变量,加花括号是为了帮助解释器识别变量的边界     $a和${a}效果一样,当变量后面连接其他字符的时候必须给变量加上大括号${a}_bc [root@master ~]# VAR=111 [root@master ~]# ec...

前端知识控制input按钮的显示与隐藏

1 if(fm.ReadFlag.value=="readonly"){ 2 var arr = document.getElementsByTagName("input") 3 for (var int =0; int < arr.length ; int ++){ 4 arr[int]....

NodeJs实现下载Excel文件

nodejs作为一门新的语言,报表功能也不是十分完善。 (1).js-xlsx: 目前 Github 上 star 数量最多的处理 Excel 的库,支持解析多种格式表格XLSX / XLSM / XLSB / XLS / CSV,解析采用纯js实现,写入需要依赖nodejs或者FileSaver.js实现生成写入Excel,可以生成子表Excel,功能强...

new Date():时间的获取和转换

new Date()获取系统当前时间: var currentTime= new Date().getYear();//获取当前年份(2位) var currentTime= new Date().getFullYear();//获取当前完整年分(4位) var currentTime= new Date().getMonth();//获取当前月份(0~1...

IE浏览器日期格式问题

easyUI项目中要向页面展示格式化后的日期:把Json传来的字符串格式去掉后面的00:00:00    formatter : function(value){ var date = new Date(value); var y = date.getFullY...