老菜鸟...

承诺大于命,诚信大于天

导航

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";

        }

    }

}

 

 

 

posted on 2011-10-31 23:30  PMJ  阅读(500)  评论(0)    收藏  举报