我有一个在服务器上运行的代码集,它正确生成一个zip文件并将其存储在服务器上。我将该文件位置作为物理路径。
我没有尝试过让我使用客户端的响应来下载该文件。
尝试1:
System.IO.FileInfo fi = new System.IO.FileInfo(zipFilePath);
//setup HTML Download of provided Zip.
//application/zip
Response.ClearContent();
Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application / zip";
Response.AddHeader("Content-Disposition",
"attachment; filename=\"" + System.IO.Path.GetFileName(zipFilePath) + "\";");
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.TransmitFile(zipFilePath);
Response.Flush();
Response.End();
没有结果。代码执行时没有错误,但没有下载到客户端。
尝试2:
//Almost the same as attempt 1, but with WriteFile instead
Response.WriteFile(zipFilePath);
无结果,与尝试1相同。
尝试3:
//Note: Same Header Section as Attempts 1 and 2
System.IO.BinaryReader reader = new System.IO.BinaryReader(new System.IO.FileStream(zipFilePath, System.IO.FileMode.Open));
int CHUNK = 1024;
List<byte> FileArray = new List<byte>();
while (reader.BaseStream.Position < reader.BaseStream.Length)
FileArray.AddRange(reader.ReadBytes(CHUNK));
byte[] bArray = FileArray.ToArray();
reader.Close();
Response.OutputStream.Write(bArray, 0, bArray.Length);
Response.Flush();
Response.End();
无结果,与之前的尝试相同
尝试4:
//Identical to Attempt 3, but using BinaryWrite
Response.BinaryWrite(bArray);
无结果,与之前的尝试相同。
问题
这些代码块中的每一个都运行时没有错误,但“保存文件”对话框始终显示。我什么都没得到。我无法弄清楚我可能会失去的生活。
如果有人有任何建议,我会全力以赴。我不知道如何将此文件下载到客户端。
答案 0 :(得分:0)
我测试了您的代码(尝试1)并使其与测试文件一起正常工作。如果文件路径错误,您将获得System.IO.FileNotFoundException
,这可能不是问题。
有两种方法可以解决这个问题:
inspect
。然后单击Network
选项卡,然后刷新
页面(您应该获取文件的位置)。检查响应
该请求的标题 - 它是什么?application/octet-stream
答案 1 :(得分:0)
原来这是一个与Ajax相关的错误,导致UpdatePanels和POST响应之间出现问题。
通过添加呼叫
修复了页面页面加载问题ScriptManager.GetCurrent(Page).RegisterPostBackControl(btnGenerate);