C# 压缩文件的使用
公司使用的仓储系统是Excced 3。但因有部分客户要求将我们系统中的库存及每天进货、出货数据在固定的时间点发送到他们指定的邮箱中。因此为了满足客户的需要,做了一个小的应用程序放在服务器上,通过定时将数据导出到Excel文件并发送到指定的客户邮箱中。
开发环境:VS2010.NET&FrameWork4.0
运行环境:Win2003,通过公司的邮件服务器SMTP协议发送。
在FrameWork4.0中测试,发再超过一定大小的文件,在发送的时候就会产出如(图一)的异常信息,导致邮件发送失败!
(图一)
由于FrameWork4.0存在的Bug,可以到Microsoft网站中下载FrameWork4.0的补丁程序,安装后便可以正常发送邮件:
https://connect.microsoft.com/visualstudio/downloads/downloaddetails.aspx?downloadid=30226
为了节省服务器空间,便对附件进行压缩后发送
操作步骤:
导出的文件在超过3M的时候,对其文件压缩后再发送,如下是将文件压缩成.zip格式的代码:
使用控件:ICSharpCode.SharpZipLib.dll
下载地址:http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
实现代码:
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
namespace AutoData.Library
{
public class FileToZip
{
public string GetFileToZip(string sFileName)
{
FileStream fs = File.OpenRead(sFileName);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
string sZipFileName = Path.GetFileName(sFileName);
//新的压缩后的文件名称
FileStream ZipFile = File.Create(sFileName + ".zip");
ZipOutputStream zipStream = new ZipOutputStream(ZipFile);
ZipEntry zipEntry = new ZipEntry(sZipFileName);
zipStream.PutNextEntry(zipEntry);
zipStream.SetLevel(1);
zipStream.Write(buffer, 0, buffer.Length);
zipStream.Finish();
zipStream.Close();
return sFileName + ".zip";
}
}
}
浙公网安备 33010602011771号