HTML

<a class="btn btn-warning" id="btnDownload">选中下载</a>

JS

        /*
批量下载
*/
// li 列表的文件下载
$("#btnDownload").on('click', function() {
var arr = [];
var urls = escape(arr.join(','));
$(this).attr('href', '@Url.Action("BatchDownloadFiles")?str=' + urls + '&r=' + Math.random());
});

API

        public ActionResult BatchDownloadFiles(string str, int type)
{
var idList = str.Split(',').ToList().ConvertAll(x => int.Parse(x));
MemoryStream ms = new MemoryStream();
ZipOutputStream zos = new ZipOutputStream(ms);
zos.IsStreamOwner = false;
zos.SetLevel();//设置压缩级别 var rsp = new GetListByDetailIDListRequest
{
UserID = CurrentUserId,
JobTypeID = type,
IDList = idList
}.GetResponse();
if (rsp.IsSuccess)
{
rsp.Data.ForEach(dto =>
{
var filebyte = ByteOfGetOrderFiles(dto); //byte类型的数据
ZipEntry entry = new ZipEntry(fileName); //定义新的压缩数据对象
zos.PutNextEntry(entry);
zos.Write(filebyte, , filebyte.Length); //写入
});
}
zos.Finish();
zos.Close(); ms.Position = ;
return File(ms, "application/x-zip-compressed", string.Format("批量下载文件-{0}.zip", DateTime.Now.ToString("yyyy年MM月dd HH时mm分ss秒")));
} public byte[] ByteOfGetOrderFiles(ExtractRecordDetailDTO dto)
{
var stream = DownloadFile(dto.SourceFile);
byte[] buffur = new byte[stream.Length];
stream.Read(buffur, , (int)stream.Length);
return buffur;
}     public static Stream DownloadFile(string path)
    {
      using (var client = new WebClient())
      {
        var stream = client.DownloadData(path);
        var outStream = new MemoryStream(stream);
        return outStream;
      }
    }

最新文章

  1. jTemplates部分语法介绍
  2. 1051. Pop Sequence
  3. pymssql examples
  4. 持续集成 .Net手册--提升开发效率和质量
  5. JSP 页面缓存以及清除缓存
  6. Spring MVC 问题列表:目录
  7. Oracle 6 - 锁和闩 - transaction的可串行化
  8. I.MX6 git patch
  9. POJ 2586 Y2K Accounting Bug(贪心)
  10. MSSQLSERVER数据库- 慎用SELECT INTO复制表
  11. 一句话、一张图记住Activity和Fragment之间错综复杂的生命周期关系
  12. discuz默认模板文件结构详解-模板文件夹介绍
  13. 开发记录_自学Python写爬虫程序爬取csdn个人博客信息
  14. 什么是redis,redis能做什么,redis应用场景
  15. String的indexOf()用于获取字符串中某个子字符串的位置
  16. [leetcode]100. Same Tree相同的树
  17. Android多线程编程&lt;二&gt;Handler异步消息处理机制之Message
  18. 字符常量 java
  19. Javascript你不知道的那些事!(数字计算篇-变态篇)无意中聊天发现的一些奇怪的事情
  20. AIM Tech Round 3 (Div. 1) B. Recover the String 构造

热门文章

  1. C++ volatile
  2. Linux符号连接的层数过多
  3. centos一键安装lnmp成功后无法访问ip(解决办法)
  4. phython学习
  5. 不能错过的Sketch实用新技巧和资源集锦
  6. servlet 中 service ,doGet , doPost 关系
  7. 2018.10.02 NOIP模拟 矩阵分组(二分答案)
  8. python3.4用循环往mysql5.7中写数据并输出
  9. UVaLive 3487 Duopoly (最小割)
  10. UVa 1596 Bug Hunt (STL栈)