tofacebook.com -专业IT技术社区 【百家号】脸书百科,.net 打包下载 Web程序 - tofacebook.com-专业IT技术社区
73°

【百家号】脸书百科,.net 打包下载 Web程序

标签:each   attach   amp   from   文件   ati   tin   request   void   

 

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
        }

  

 

.net 打包下载

标签:each   attach   amp   from   文件   ati   tin   request   void   

原文地址:https://www.cnblogs.com/panpanwelcome/p/9373662.html


本文由百家号/熊掌号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。

已有 0 条评论

    我有话说: