• .net 打包下载


     

    ZipArchive 打包下载

    private IActionResult DownloadZipFromUrl(string[] guids,string zipFullName)
            {
                using (MemoryStream zipStream = new MemoryStream())
                {
                    using (System.Net.WebClient webClient = new System.Net.WebClient())
                    {
                        using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create, leaveOpen: true))
                        {
                            foreach (var m in guids)
                            {
                                if (string.IsNullOrWhiteSpace(m)) continue;
                                if (m == Guid.Empty.ToString()) continue;
    
                                #region build url : https://****/upload/image?g=353e7e1b-69ae-4a60-8cfc-3737c2a64eaa&j=false
                                var builder = new UriBuilder()
                                {
                                    Scheme = Request.Scheme,
                                    Host = Request.Host.Host,
                                    Path = "upload/image",
                                    Query = "j=false&g=" + m,
                                };
                                if (Request.Host.Port != null)
                                {
                                    builder.Port = Request.Host.Port.Value;
                                }
                                #endregion
                                webClient.DownloadDataCompleted += wc_DownloadDataCompleted;
                                var attachmentData = webClient.DownloadData(builder.Uri);
                                ZipArchiveEntry entry = archive.CreateEntry(string.IsNullOrWhiteSpace(_DownloadAttachmentFileName) ? "File1.pdf" : _DownloadAttachmentFileName, System.IO.Compression.CompressionLevel.Fastest);
                                using (var entryStream = entry.Open())
                                {
                                    entryStream.Write(attachmentData);
                                }
                            }
                        }
                    }// disposal of archive will force data to be written to memory stream.
                    zipStream.Position = 0; //reset memory stream position.
                    return File(zipStream.ToArray(), "application/vnd.ms-excel", zipFullName);
                }
            }
    

      

    获取文件名

    private string _DownloadAttachmentFileName = string.Empty;
            private void wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
            {
                WebClient wc = sender as WebClient;
    
                // Try to extract the filename from the Content-Disposition header
                if (!String.IsNullOrEmpty(wc.ResponseHeaders["Content-Disposition"]))
                {
                    _DownloadAttachmentFileName = wc.ResponseHeaders["Content-Disposition"].Substring(wc.ResponseHeaders["Content-Disposition"].IndexOf("filename=") + 10).Replace(""", ""); //FileName ok
                   
                }
                var data = e.Result; //File OK
            }
    

      

  • 相关阅读:
    《深入V8引擎-第01课》
    《各 JavaScript 引擎的简介,及相关资料》
    《【前端性能】必须要掌握的原生JS实现JQuery》
    《[iOS][OC] 开发利器:控制器传送门VCPicker(附demo)》
    《iOS 上的 CSS 样式协议 VKCssProtocol》
    ICML 2019论文录取Top100:谷歌霸榜
    进阶!自然语言处理背后的数据科学
    学界!关于GAN的灵魂七问
    如何优化深度学习模型
    从DeepNet到HRNet,这有一份深度学习“人体姿势估计”全指南
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/9373662.html
Copyright © 2020-2023  润新知