Asp.Net 批量打包文档并导出压缩包

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 Asp.Net 批量打包文档并导出压缩包,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言

  在最近的项目中遇到一个导出压缩包的功能需求。正好是将之前导出的文档进行打包的批处理。下面开始我们的续集讲解。首先我们需要引入插件:ICSharpCode.SharpZipLib.Zip
Using ICSharpCode.SharpZipLib.Zip; //这个插件将帮助我们实现最主要的压缩处理。

内容

  下面我们通过代码和每个步骤的注释来说明一下实现的过程:
  

#region [-批量导出简历压缩包 -]   
                string[] User = objects.Split(',');
                List<string> listFJ = new List<string>();//保存附件路径
                List<string> listFJName = new List<string>();//保存附件名字
                //将需要压缩的文件路径及名称分别存入到ListFj、ListFjName中              
                for (int i = 0; i < User.Length; i++)
                {
                    GetURL(User[i], out name);
                    var StrURL = serverPath + "Word/" + name;
                    if (name != "")
                    {
                        listFJ.Add(StrURL);
                        listFJName.Add(name);
                    }
                }
                //将listFJ:路径,listFJName:文件名,serverPath:导出的路径,time:导出的文件名,9:压缩级别。传入方法中。
                string time = DateTime.Now.Ticks.ToString();
                ZipFileMain(listFJ.ToArray(), listFJName.ToArray(), serverPath + "Download/" + time + ".zip", 9);
                //以流的方式读取并导出压缩包文件
                string sFileName = serverPath + "Download/" + time + ".zip";
                FileStream fileStream = new FileStream(sFileName, FileMode.Open);
                long fileSize = fileStream.Length;
                byte[] fileBuffer = new byte[fileSize];
                fileStream.Read(fileBuffer, 0, (int)fileSize);
                fileStream.Close();

                context.Response.ContentType = "application/zip";
                context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(time + ".Zip", Encoding.UTF8));
                context.Response.AddHeader("Content-Length", fileSize.ToString());

                context.Response.BinaryWrite(fileBuffer);

                //删除服务端的压缩文件
                string root = serverPath + "Download/";
                DirectoryInfo di = new DirectoryInfo(root);
                var files = di.GetFiles();
                foreach (var f in files)
                {
                    if (f.Extension.ToUpper() == ".ZIP")
                    {
                        File.Delete(f.FullName);
                    }

                }
                //删除服务端的DOC文件
                root = serverPath + "Word/";
                di = new DirectoryInfo(root);
                files = di.GetFiles();
                foreach (var f in files)
                {
                    if (f.Extension.ToUpper() == ".DOCX")
                    {
                        File.Delete(f.FullName);
                    }

                }
                //关闭整个方法
                context.Response.End();
                context.Response.Close();
#endregion

小结

  每个需求的实现都可以在之前的技术上延伸丰富出更多的内容。很喜欢在这些新功能的实现中一点点发掘设计自己的方案,体会最终的乐趣。荣幸与您分享!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/144267.html

(0)

相关推荐

发表回复

登录后才能评论