首页 新闻 会员 周边 捐助

asp.net 下 Ionic.zip 多文件打包下载,本地正常,部署到服务器出错!

0
悬赏园豆:10 [已解决问题] 解决于 2012-11-30 00:35

使用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();

 

--提示错误是“不可预料的压缩文件末端”

willieQ的主页 willieQ | 初学一级 | 园豆:62
提问于:2012-11-29 14:10
< >
分享
最佳答案
0

你这种直接把压缩文件的文件输出下载不可行,如果文件大了会造成内存溢出。

你先试下把压缩文件生成到硬盘里,再输出这个文件流。

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();
收获园豆:5
geass.. | 小虾三级 |园豆:1821 | 2012-11-29 20:20

谢谢,我试一下!

willieQ | 园豆:62 (初学一级) | 2012-11-29 20:35

搞定了,用handler就好了~~

willieQ | 园豆:62 (初学一级) | 2012-11-30 00:34

@willieQ: 可以具体说一下怎样解决吗?

geass.. | 园豆:1821 (小虾三级) | 2012-11-30 07:48

@willieQ: 您好,现在也遇到同样的问题了,求具体解决办法……。

moving456 | 园豆:200 (初学一级) | 2013-03-21 15:38
其他回答(3)
0

看看IIS设置,是否支持扩展名zip的文件,希望对你有帮助。

收获园豆:5
深潭 | 园豆:187 (初学一级) | 2012-11-29 15:19

谢谢!应该支持的,我直接放个zip文件到服务器上,可以下载打开的!!

支持(0) 反对(0) willieQ | 园豆:62 (初学一级) | 2012-11-29 16:18
0

用了第三方组件吧,可能服务器缺少类库之类的。开发环境一般没问题

jewely | 园豆:109 (初学一级) | 2012-11-29 19:50
0

请问你这个问题时怎么解决的

!你好 | 园豆:208 (菜鸟二级) | 2017-11-01 14:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册