将 PDF 流式传输到网页失败

2024-02-02

我有一个 PDF 的 URL,我想将 PDF 提供给我的页面查看器。

我可以成功(我认为)检索 PDF 文件。然后,当我执行 Response.BinaryWrite() 时,我从 adobe reader 收到“文件已损坏且无法修复”错误。

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            byte[] output = DoWork("Http://localhost/test.pdf");
            Response.Clear();
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF");
            Response.AddHeader("content-length", output.Length.ToString());
            Response.BinaryWrite(output);
            Response.End();
        }
    }

    public byte[] DoWork(string requestUrl)
    {
        byte[] responseData;
        HttpWebRequest req = null;
        HttpWebResponse resp = null;
        StreamReader strmReader = null;

        try
        {
            req = (HttpWebRequest)WebRequest.Create(requestUrl);

            using (resp = (HttpWebResponse)req.GetResponse())
            {
                byte[] buffer = new byte[resp.ContentLength];
                BinaryReader reader = new BinaryReader(resp.GetResponseStream());
                reader.Read(buffer, 0, buffer.Length);
                responseData = buffer;
            }
        }
        finally
        {
            if (req != null)
            {
                req = null;
            }

            if (resp != null)
            {
                resp.Close();
                resp = null;
            }
        }

        return responseData;

    }

显然,我需要使用 ReadBytes() 出于某种原因,当从 URL 读取 PDF 时,您无法获得您请求的所有字节。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            byte[] output = DoWork("Http://localhost/test.pdf");
            Response.Clear();
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment");
            Response.AddHeader("content-length", output.Length.ToString());
            Response.BinaryWrite(output);
            Response.End();
        }
    }

    public byte[] DoWork(string requestUrl)
    {
        byte[] responseData;
        HttpWebRequest req = null;
        HttpWebResponse resp = null;
        StreamReader strmReader = null;

        try
        {
            req = (HttpWebRequest)WebRequest.Create(requestUrl);

            using (resp = (HttpWebResponse)req.GetResponse())
            {
                byte[] buffer = new byte[resp.ContentLength];
                using (BinaryReader reader = new BinaryReader(resp.GetResponseStream()))
                {
                    buffer = reader.ReadBytes(buffer.Length);
                    reader.Close();
                }
                responseData = buffer;
            }
        }
        finally
        {
            if (req != null)
            {
                req = null;
            }

            if (resp != null)
            {
                resp.Close();
                resp = null;
            }
        }

        return responseData;

    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 PDF 流式传输到网页失败 的相关文章

  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 本地权威声明和外部提供商声明的混淆

    我正在创建一个简单的 WebApi 它允许用户与 Facebook 连接 当我从 facebook 获取 accessToken 时 我调用 RegisterExternal 创建 Asp Net Identity 记录并存储令牌中的声明

随机推荐

  • 使用 Elastic Beanstalk 部署 .NET 工作线程应用程序

    我正在使用 AWS 基础设施开发更广泛的 Web 应用程序 它有两个 工作 组件 从 SQS 读取工作并将结果写入 RDS 数据库 其中之一是 Python 我已经在单个 Elastic Beanstalk 实例上使用了它 第二个使用 NE
  • *** 检测到堆栈粉碎 ***:<未知> 终止中止(核心转储) 错误仅有时发生?

    我正在完成作业 因此我无法发布代码 并且很少出现此运行时错误 检测到堆栈粉碎 终止 中止 核心转储 当我再次运行可执行文件后 一切正常 是否有原因导致此错误仅有时出现 作为参考 我试图完成的作业要求我们将文件中的数据加载到两个向量中 并对数
  • AngularJS 和 Websocket

    我正在尝试学习 HTML5 Node js Express MongoDB AngularJS Websocket 的东西 这似乎让每个人现在都很兴奋 稍微适得其反的是 我实际上很难区分每种技术的实际用途 尤其是使用 ejs 作为模板引擎
  • 使用 if 条件更新 MySQL

    看来我有很大的问题条件查询 我必须做一个有条件更新 我在这里写下我想做的事情 IF SELECT tipo FROM abbonamento WHERE idU 17 punti THEN UDPATE abbonamento SET pu
  • 导出-导入 Android Studio AVD

    我一直在 Android Studio 中进行开发 并创建了许多适合我不同应用规范的 AVD 现在我计划在我的电脑上进行系统还原 有没有办法备份 AVD 然后在执行系统还原后将它们导入到新的 Android Studio 安装中 Thank
  • R 命令 dir.create 和 file.path

    我刚刚开始学习 r 并对课程中给出的以下问题感到困惑 使用 dir create 和 file path 在一个命令中在当前工作目录中创建一个名为 testdir2 的目录及其子目录 名为 testdir3 我无法让它接受我的答案 然后在网
  • jRails 替代方案

    你知道 jrails 的替代品吗 它或多或少已经过时了 使用 jQuery 1 5 现在 1 7 是当前版本 有人知道替代方案吗 Thanks EDIT 我知道如何单独使用jquery构建rails助手 但我喜欢rails助手 所以我不想单
  • 如何从文件描述符获取 FILE* 流?

    我们可以使用以下方法从 FILE 流中获取文件描述符fileno 功能 是否有一个函数可以从文件描述符获取 FILE 流而无需重新打开文件 FILE fdopen int fd const char mode See fdopen 3 但它
  • C# - 当应用程序使用另一种语言时,获取英语的异常消息?

    我正在尝试本地化我的程序 但我希望发送给开发人员的错误消息以英语显示 我一直无法找到一种方法来实现这一点 因为似乎如果在引发错误时将 UI 区域性设置为另一种语言 则会以该语言引发错误 由于这个程序不是我自己编写的 而且它很大 所以我认为在
  • 为什么我的网络浏览器在我点击链接时不发送 cookie,但在我输入 url 时却发送得很好

    我正在用 Golang HTML 创建一个 Web 应用程序 我正在实现注册 会话 电子邮件验证和登录 我的代码有效 但是我注意到一些奇怪的浏览器行为 当用户第一次注册时 我的应用程序将向他们发送一封电子邮件 其中包含一个链接 网址中带有唯
  • android中的service、intentService有什么区别? [复制]

    这个问题在这里已经有答案了 有什么区别Service and an IntentService在安卓中 有什么区别AsyncTask and an IntentService在安卓中 1 Service和IntentService的区别 S
  • MKMapView 不调用委托方法

    在 UIViewController 中 我将 MKMapView 添加到控制器控制的视图中 void viewDidLoad super viewDidLoad CGRect rect CGRectMake 0 0 460 320 map
  • DropDownList SelectedIndexChanged 事件未在 GridView HeaderTemplate 内触发

    我目前正在工作委员会网站上工作 特别是工作搜索页面 我正在将找到的工作返回到DataBound GridView 即gvwJobs 并且在HeaderTemplate我有一个DropDownList named ddlSortDirecti
  • 显示和隐藏 div jQuery

    我对这个结构有 HTML div class container div
  • 从 Java Android 代码访问 string.xml 资源文件

    如何访问其中的值res values string xml来自Android的资源文件Activity class 那么你可以使用 String getString R string app name 并且 您可以使用获取字符串数组 Str
  • Android 应用程序安装在我的 SD 卡中的什么位置

    我只想查看与我的手机中的应用程序之一关联的文件 尤其是 png 文件 该应用程序实际上安装 移动 在SD卡中 问题是 我在 SD 卡中找不到该应用程序 我正在使用名为 文件管理器 的文件浏览器来浏览 SD 卡 有人可以帮我解决这个问题吗 它
  • 如何在不使用 C# 中内置数学函数的情况下计算以 2 为底的对数?

    如何在不使用 C 中内置数学函数的情况下计算以 2 为底的对数 我在应用程序中重复使用 Math Log 和 BigInteger Log 数百万次 并且速度变得非常慢 我对使用二进制操作来实现相同目的的替代方案感兴趣 请记住 我可以使用对
  • 如何使 UIbutton 在 UIView 中可拖动?

    我需要在仪表板中拖放按钮我可以使用以下代码拖放按钮 void viewDidLoad super viewDidLoad eventButton addTarget self action selector draggedOut withE
  • 根据另一个字段中的重复项计算一个字段中的重复项的聚合函数

    我使用 mongoengine 作为 ORM 与 Flask 应用程序 模型类的定义如下 class MyData db Document task id db StringField max length 50 required True
  • 将 PDF 流式传输到网页失败

    我有一个 PDF 的 URL 我想将 PDF 提供给我的页面查看器 我可以成功 我认为 检索 PDF 文件 然后 当我执行 Response BinaryWrite 时 我从 adobe reader 收到 文件已损坏且无法修复 错误 这是