我有一个应用程序需要从文件系统读取 PDF 文件,然后将其写给用户。 PDF 大小为 183KB,看起来运行良好。当我使用底部的代码时,浏览器会获取一个 224KB 的文件,并且我从 Acrobat Reader 收到一条消息,指出该文件已损坏且无法修复。
这是我的代码(我也尝试过使用 File.ReadAllBytes(),但我得到了同样的结果):
using (FileStream fs = File.OpenRead(path))
{
int length = (int)fs.Length;
byte[] buffer;
using (BinaryReader br = new BinaryReader(fs))
{
buffer = br.ReadBytes(length);
}
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", Path.GetFileName(path)));
Response.ContentType = "application/" + Path.GetExtension(path).Substring(1);
Response.BinaryWrite(buffer);
}
尝试添加
响应.End();
调用 Response.BinaryWrite() 后。
您可能会无意中在 Response.BinaryWrite 之后发回其他内容,这可能会使浏览器感到困惑。 Response.End 将确保浏览器只得到您真正想要的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)