日期:2014-05-17  浏览次数:20492 次

使用System.IO.Packaging.Package进行文件压缩所产生的问题
最近在项目中需要进行文件压缩,即将打包好的压缩文件提供给用户,用户进行下载。
获知微软提供了一个System.IO.Packaging.Package的类,从而可以进行打包,那么我就进行了使用。谁知道,这一用就用出事了。压缩后文件名变乱码了,不知道怎么解决了。
 
protected void FiletoZip(string newname,string  lpSourceFolder)
    {
        DirectoryInfo di = new DirectoryInfo(lpSourceFolder);
        FileInfo[] files = di.GetFiles();
        string savdpath = newname;
        using (Package Zip = System.IO.Packaging.Package.Open(savdpath, System.IO.FileMode.Create))
        {
            foreach (FileInfo li in files)
            {
                //HttpCookie cookie = Request.Cookies["PersonMessage"];
                string destFilename = li.Name;
                Uri uri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));
                if (Zip.PartExists(uri))
                {
                    Zip.DeletePart(uri);
                }
                PackagePart part = Zip.CreatePart(uri, "application/x-zip-compressed", CompressionOption.Normal);
                using (FileStream filestream = new FileStream(li.FullName, FileMode.Open, FileAccess.Read))
                {
                    using (Stream dest = part.GetStream())
                    {
                        CopyStream(filestream, dest);
                        Response.Write("<script>alert('压缩完成')</script>");
                    }
                }
            }}}
protected void CopyStream(FileStream inputstream, Stream outputstream)
    {
        long buffersize = inputstream.Length < Buffer_siez ? inputstream.Length