c# - 来自数据库的 varbinary pdf 已崩溃?

标签 c# asp.net linq pdf

这就是我从我的数据库中检索 varbinary pdf 并在我的 asp.net 页面中查看的方式,

byte[] pdfFile= null;
var obj = DBContext.MyTable.Where(x => x.ID == 1 ).SingleOrDefault().pdfColumn;
pdfFile = new byte[obj.Length];

if (pdfFile!= null)
{
     Response.ClearHeaders();
     Response.Clear();
     Response.AddHeader("Content-Type", "application/pdf");
     Response.AddHeader("Content-Length", pdfFile.Length.ToString());
     Response.AddHeader("Content-Disposition", "inline; filename=sample.pdf");
     Response.BinaryWrite(pdfFile);
     Response.Flush();
     Response.End();
}

当我使用这段代码查看我的 pdf 时,我收到了这条消息

PDF Showing

我的 obj 返回喜欢

Byte2

字节数组的内容(pdfFile)返回喜欢

enter image description here

我的 pdf 文件没有显示!我的代码有什么问题?

最佳答案

在我看来,您只是在创建一个具有正确长度的 obj 的字节数组,但您实际上并没有将 obj 的内容放入 pdfFile 数组。

如果你......会发生什么

byte[] pdfFile= null;
var obj = DBContext.MyTable.Where(x => x.ID == 1 ).SingleOrDefault().pdfColumn;
pdfFile = new byte[obj.Length];

obj.CopyTo(pdfFile);

您看到的错误和显示的空白页通常是 pdf 文件全部为二进制零的症状,或者如果您使用的是流,则流位置位于末尾。通过在 Debug模式下运行并在将字节数组或流发送到管道之前检查其内容,您可以轻松确定是否属于这种情况。检查长度和内容,它应该看起来像二进制,而不是全为零!

关于c# - 来自数据库的 varbinary pdf 已崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16911116/

相关文章:

c# - 获取错误 : Unable to load one or more of the requested types. 检索 LoaderExceptions 属性以获取更多信息

c# - 我可以使用 Reactive Extensions 进行独立订阅/发布吗?

c# - 如何设计流畅的异步操作?

c# - 提示用户在 ASP.NET C# 中保存/打开文件

c# - 如何在不引用 System.Web 的情况下检查 Web.Config 中的身份验证模式值

c# - 如何将连接两个对象的 LINQ 查询语法转换为方法语法?

database - 用编辑过的记录检查原始数据库记录的问题

c# - 获取列表中的最后一个元素(基于名称) - LINQ C#

c# - 是否有 .Net 类可以执行 ManualResetEvent.PulseAll() 会执行的操作(如果存在)?

c# - "Throttle"一个函数