文件打包下载

使用的dll:ICSharpCode.SharpZipLib

下载地址 http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx

 

/// <summary>
/// 下载资料
/// </summary>
public void DownloadCourseData()
{
    string attachBatchNo = DESHelper.Decrypt(ctx.Get("no"), "simpo");//附件批次号
    List<Edu_Attach> edu_AttachList = edu_AttachService.FindAttByNo(attachBatchNo);//获取附件集合
    if (edu_AttachList.Count > 0)
    {
        string pathName = edu_AttachList[0].AttachContent;//附件路径
        int pos = pathName.LastIndexOf("/");
        string path = pathName.Substring(0, pos + 1);//路径不含文件名
        string zipName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + strUtil.GetRnd(4, true, false, false, false, "") + ".zip";//zip文件名
        string zipPathName = PathHelper.Map(sys.Path.DiskPhoto) + path.Replace("/static/upload/image", "").Replace("/", "\\") + zipName;
        FileStream fs = new FileStream(zipPathName, FileMode.Create);
        ZipOutputStream zos = new ZipOutputStream(fs);
        foreach (Edu_Attach edu_Attach in edu_AttachList)
        {
            string filePathName = PathHelper.Map(sys.Path.DiskPhoto) + edu_Attach.AttachContent.Replace("/static/upload/image", "").Replace("/", "\\");
            pos = filePathName.LastIndexOf("\\");
            string zipEntryName = edu_Attach.AttachName;
            ZipEntry zipEntry = new ZipEntry(zipEntryName);
            zos.PutNextEntry(zipEntry);
            fs = File.OpenRead(filePathName);
            byte[] byteArray = new byte[fs.Length];
            fs.Read(byteArray, 0, byteArray.Length);
            zos.Write(byteArray, 0, byteArray.Length);
        }
        zos.Finish();
        zos.Close();
        string downloadFileName = path + zipName;
        redirectUrl(downloadFileName);
    }
}
View Code

 

 

 

posted @ 2014-03-15 13:42  0611163  阅读(605)  评论(0编辑  收藏  举报