使用Ionic.Zip,在 asp.net下 打包多文件到zip直接下载碰到问题,我本地正常下载,部署到服务器上就不行了。一点下载就卡住,好一会儿才显示文件损坏。我试着放个zip文件服务器上,可以通过链接直接下载!
Response.Clear(); Response.BufferOutput = false; Response.ContentType = "application/zip"; Response.AddHeader("content-disposition", "inline; filename=123.zip"); using (ZipFile zip = new ZipFile()) { zip.AddFiles(filesToInclude, false, ""); zip.Save(Response.OutputStream); } Response.Close();
--提示错误是“不可预料的压缩文件末端”
你这种直接把压缩文件的文件输出下载不可行,如果文件大了会造成内存溢出。
你先试下把压缩文件生成到硬盘里,再输出这个文件流。
string zipPath; using (ZipFile zip = new ZipFile()) { zip.Save(zipPath); } FileInfo zipFile = new FileInfo(zipPath); context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); //解决中文乱码 context.Response.AddHeader("Content-Disposition", "attachment; filename=" + context.Server.UrlEncode(zipFile.Name)); //解决中文文件名乱码 context.Response.AddHeader("Content-length", zipFile.Length.ToString()); context.Response.ContentType = "appliction/octet-stream"; context.Response.WriteFile(zipFile.FullName); context.Response.End();
谢谢,我试一下!
搞定了,用handler就好了~~
@willieQ: 可以具体说一下怎样解决吗?
@willieQ: 您好,现在也遇到同样的问题了,求具体解决办法……。
看看IIS设置,是否支持扩展名zip的文件,希望对你有帮助。
谢谢!应该支持的,我直接放个zip文件到服务器上,可以下载打开的!!
用了第三方组件吧,可能服务器缺少类库之类的。开发环境一般没问题
请问你这个问题时怎么解决的