NET 文件批量下载
2024-08-30 03:50:11
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;
}
}
最新文章
- jTemplates部分语法介绍
- 1051. Pop Sequence
- pymssql examples
- 持续集成 .Net手册--提升开发效率和质量
- JSP 页面缓存以及清除缓存
- Spring MVC 问题列表:目录
- Oracle 6 - 锁和闩 - transaction的可串行化
- I.MX6 git patch
- POJ 2586 Y2K Accounting Bug(贪心)
- MSSQLSERVER数据库- 慎用SELECT INTO复制表
- 一句话、一张图记住Activity和Fragment之间错综复杂的生命周期关系
- discuz默认模板文件结构详解-模板文件夹介绍
- 开发记录_自学Python写爬虫程序爬取csdn个人博客信息
- 什么是redis,redis能做什么,redis应用场景
- String的indexOf()用于获取字符串中某个子字符串的位置
- [leetcode]100. Same Tree相同的树
- Android多线程编程<;二>;Handler异步消息处理机制之Message
- 字符常量 java
- Javascript你不知道的那些事!(数字计算篇-变态篇)无意中聊天发现的一些奇怪的事情
- AIM Tech Round 3 (Div. 1) B. Recover the String 构造
热门文章
- C++ volatile
- Linux符号连接的层数过多
- centos一键安装lnmp成功后无法访问ip(解决办法)
- phython学习
- 不能错过的Sketch实用新技巧和资源集锦
- servlet 中 service ,doGet , doPost 关系
- 2018.10.02 NOIP模拟 矩阵分组(二分答案)
- python3.4用循环往mysql5.7中写数据并输出
- UVaLive 3487 Duopoly (最小割)
- UVa 1596 Bug Hunt (STL栈)