zoukankan      html  css  js  c++  java
  • NET 文件批量下载

    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(1);//设置压缩级别
    
                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, 0, filebyte.Length);  //写入
                    });
                }
                zos.Finish();
                zos.Close();
    
                ms.Position = 0;
                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, 0, (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;
          }
        }
    View Code
  • 相关阅读:
    关于以追加模式写入文件时,为什么第一行是空行?
    使用正则表达式的技巧
    super关键字的三种用法
    Excel快捷键
    重载与重写的区别
    方法重名
    区分子类方法中重名的三种变量
    继承
    Chapter08【String类、static、Arrays类、Math类】
    Math类
  • 原文地址:https://www.cnblogs.com/Cailf/p/9946823.html
Copyright © 2011-2022 走看看