zoukankan      html  css  js  c++  java
  • .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
            }
    

      

  • 相关阅读:
    etherlime-1-Quick Start
    etherlime-4-Etherlime CLI
    Sequelize-nodejs-2-basic usage
    Sequelize-nodejs-6-Instances
    Sequelize-nodejs-5-Querying
    Sequelize-nodejs-4-Model usage
    Sequelize-nodejs-3-model definition
    eclipse快捷键大全
    java第一课
    java程序员认证考试题库
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/9373662.html
Copyright © 2011-2022 走看看