我正在尝试从我的.net C#应用程序下载.zip文件。没有成功。我的代码如下。文件路径和名称完全有效,似乎没有任何下载。请注意我如何将“application / x-zip-compressed”和“application / zip”作为内容类型(一个注释掉,尝试过两者)。两者都不起作用。没有任何错误的迹象,只是没有下载。
我发誓这段代码在几周前就已经开始工作了,这个问题突然爆发,“保存为”选项正在发布,现在无论出于何种原因都没有发生。
任何人看到任何错误,或者我的问题是否存在于代码之外的其他地方?
FileInfo file = new FileInfo(filepath);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
//Response.ContentType = "application/x-zip-compressed";
Response.ContentType = "application/zip";
Response.WriteFile(file.FullName);
答案 0 :(得分:0)
我猜你在FileNotFoundException
获得Response.AddHeader("Content-Length", file.Length.ToString());
。
要解决此问题,您必须使用Server.MapPath(...)
将应用程序的根目录添加到filename
。
此外,您应该Flush()
和End()
Response
正确地force the client接收它。
string filename = "myfile.zip";
string serverpath = Server.MapPath($"~/{filename}");
FileInfo file = new FileInfo(serverpath);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/zip";
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();