前言
在最近的项目中遇到一个导出压缩包的功能需求。正好是将之前导出的文档进行打包的批处理。下面开始我们的续集讲解。首先我们需要引入插件: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