string fileName = "test.zip";
string path = "c:\\temp\\";
string fullPath = path + fileName;
FileInfo file = new FileInfo(fullPath);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
Response.AppendHeader("content-length", file.Length.ToString());
Response.ContentType = "application/x-compressed";
Response.TransmitFile(fullPath);
Response.Flush();
Response.End();
实际的zip文件c:\ temp \ test.zip是好的,有效的,无论你想叫什么。当我导航到目录c:\ temp \并双击test.zip文件时;它会打开。
我的问题似乎只与下载有关。上面的代码执行没有任何问题。提供了文件下载对话框。我可以选择保存或打开。如果我尝试从对话框中打开文件,或保存它然后打开它。我收到以下对话框消息:
压缩(压缩)文件夹无效或已损坏。
对于Response.ContentType,我尝试过:
应用程序/ x压缩 应用程序/ x-ZIP压缩的 应用程序/ x-用gzip compresse 应用/八位字节流 应用程序/压缩
正在使用以下代码创建zip文件(我确信由于我能够直接打开创建的文件而正常工作):Ionic.zip
答案 0 :(得分:23)
这很有用。我不知道为什么,但确实如此。
string fileName = "test.zip";
string path = "c:\\temp\\";
string fullPath = path + fileName;
FileInfo file = new FileInfo(fullPath);
Response.Clear();
//Response.ClearContent();
//Response.ClearHeaders();
//Response.Buffer = true;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
//Response.AppendHeader("Content-Cength", file.Length.ToString());
Response.ContentType = "application/x-zip-compressed";
Response.WriteFile(fullPath);
//Response.Flush();
Response.End();