asp.net 响应.TransmitFile发送零字节文件

cnwbcb6i  于 12个月前  发布在  .NET
关注(0)|答案(2)|浏览(138)

我试图通过自定义处理程序下载一个zip文件。该文件被下载为零字节zip文件。但原始文件不是零字节zip文件。
ProcessRequest(HttpContext context)中的代码是

String file = Directory.GetFiles(cachePath).FirstOrDefault();
String filename = Path.GetFileName(file);
context.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
context.Response.ContentType = "application/zip";
//byte[] bytes = File.ReadAllBytes(file);
//context.Response.BinaryWrite(bytes);
context.Response.TransmitFile(file);
context.Response.Flush();

字符串

y1aodyip

y1aodyip1#

也许你需要Content-Length

context.Response.AddHeader("Content-Length", new FileInfo(file).Length.ToString());

字符串
或者你可能缺少ContentType

context.Response.ContentType = "application/octet-stream";


作为最后的手段,它可能与缓存有关。

context.Response.Cache.SetNoStore();

pieyvz9o

pieyvz9o2#

这段代码看起来很准确。我在我的网站上使用了一个几乎相同的片段来执行文件下载。我唯一看不到的是你从中检索文件的路径。你可能需要执行HostingEnvironment.ApplicationPhysicalPath来获取文件的实际路径。

相关问题