我有这个小代码:
HttpContext.Current.Response.Clear();
if ( files.Contains( ',' ) ) {
HttpContext.Current.Response.ContentType = "application/zip";
HttpContext.Current.Response.AddHeader( "content-disposition", "filename=arch-01.zip");
string[] split = files.Split( ',' );
ZipForge zip = new ZipForge();
try {
zip.FileName = Path.Combine( @"C:\Item", "arch-01.zip");
zip.OpenArchive( System.IO.FileMode.Create );
zip.BaseDir = @"C:\";
foreach ( string file in split ) {
zip.AddFiles( file );
}
zip.CloseArchive();
} catch ( Exception e ) {
Console.Write( e.Message );
}
}
我希望在压缩后在浏览器中显示Open - Save As
对话框。文件存在,我们假设files
包含
C:\Item\a1.xls,C:\Item\a2.xls.
但是存档总是空的。我的错在哪里?我有C:的许可。 我在回答标题时出错了吗?
问题已解决
我添加了以下代码:
HttpContext.Current.Response.WriteFile( zip.FileName );
现在有效:)
答案 0 :(得分:0)
我会尝试将你的问题分解出来以找出问题所在。制作一个控制台应用程序,用于压缩您想要压缩的文件,看看是否有效。之后,看看你是否可以下载你创建的zip和zip正确的工作,同时从你的asp.net网站下载它。代码中似乎有两件事情很好,但我们需要确定实际问题的位置。
答案 1 :(得分:0)
我猜您的响应标题中缺少附件。 它应该是这样的
HttpContext.Current.Response.AddHeader(“Content-Disposition”,“attachment; filename = arch-01.zip”);
这应该可以解决我想的问题。