即使我使用 Content-Disposition: inline,PHP 也会强制下载 PDF 文件

2024-02-01

如果可能的话,我正在尝试在浏览器中显示 PDF,而且我知道我可以在 Chrome 中执行此操作,这就是我正在测试的版本。问题是,每次我尝试时,它都会提示下载。

我正在使用 PHP 会话,所以我知道发送了一些无关的标头,所以我调用header_remove()重置一切。

我调用这个函数来显示 PDF:

<?php
// For demonstrative purposes
session_start();

if (!isset($_SESSION['auth'])) {
    header('Location: login.php');
    die;
}

/*
 * void viewPDF (Report $report)
 * Outputs the PDF of the report
 */
function viewPDF ($report) {
        // Tell the browser we are going to serve a PDF file.
    $file = dirname(__FILE__).'/../reports/'.$report->id.'.pdf';
        // The location of the PDF
    if (!file_exists($file)) {
        die ('The PDF does not exist.');
            // Somehow the file does not exist.
    }

    header_remove();
        // I'm using PHP sessions, so remove the headers
        // automatically set that might break something.
    header('Content-Disposition: inline;filename='.$report->id.'.pdf');
    header('Content-Transfer-Encoding: binary');
    header('Content-Type: application/pdf');
    header('Content-Length: '.filesize($file));
    readfile($file);
        // Serve the report PDF file from the reports
        // repository.
    die;
        // Any whitespace could corrupt the PDF, so be extra
        // sure nothing else gets printed.
}

// For demonstrative purposes:
$report = new StdClass;
$report->id = 1;
viewPDF($report);
?>

这些是正在发送的标头:

Date: Tue, 08 Oct 2013 18:41:32 GMT
Server: Apache/2.2.22 (Win32) PHP/5.4.15
Content-Type: application/pdf
Content-Transfer-Encoding: binary
Content-Disposition: inline;filename=1.pdf
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Content-Length: 73464

但它仍然提示下载。下载后,我可以在 Adob​​e Reader 中打开它。

我错过了什么吗?

Thanks.


这段代码对我有用:

    header('Content-Description: File Transfer');
    header('Content-Type: application/pdf');
    header('Content-Disposition: inline; filename="' . basename($file).'"');
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使我使用 Content-Disposition: inline,PHP 也会强制下载 PDF 文件 的相关文章

  • MySQL如何从多个表中获取数据

    我正在寻找 php MySQL jquery 的帮助 我有2张桌子 table1表 1 有 4 列 id 标题 desc thumb img tabel2表 2 有 3 列 id 表 id img 我只想将 2 个表与 get QS 的值进
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求
  • 如何对 PHP 数组中的值进行排序/过滤?

    我需要 foreach 这个数组的值 My CODE 该代码的结果 Array 0 gt Array 0 gt Age Name 1 gt 22 Yrs Value 2 gt Ethnicity Name 3 gt Caucasian Va
  • 为什么需要将nginx中的$args重定向到index.php?

    许多 PHP 框架建议将其添加到 nginx location try files uri index php is args args 执行index php在所有 HTTP 请求上 为什么我需要 is args args 我觉得 arg
  • Facebook Graph API - 如何用新行发布到墙上?

    我正在使用 Facebook Graph API 但遇到一个问题 我找不到任何方法如何使用一些 HTML 代码发布到墙上or新线路 怎么办呢 这是我的代码
  • 使用 cURL PHP 发布到 Facebook 用户的墙

    我正在存储 facebook 用户 ID 和访问令牌 我可以将此信息发布到选定用户的留言墙上吗 在这里找到以下代码 http developers facebook com docs reference api post http deve
  • Codeigniter $this->db->reconnect();用法

    I m not自动加载数据库 因为我的应用程序的大多数页面don t需要数据库处理 否则整个事情会变慢 我想要做的是 当数据库已经存在时 不要建立与数据库的新连接 而是使用它而不是打扰服务器数据库 那么我该如何实施 this gt db g
  • PHP中如何处理大于16位的值?

    我正在使用 SOAPclient 调用一个方法 该方法 远程外部 SOAP Web 服务 向我返回一个 19 位数字 我无法控制退回的内容 当我打印这个数字的值时 只有前 16 位数字是准确的 我尝试过类型转换 GMP 等 但是当 php
  • 通过php变量的值设置输入字段的值

    我有一个简单的 php 计算器 代码是 h1 align center This is PHP Calculator h1
  • 正则表达式 - 剥离非数字并删除分(如果有)

    我目前正在开发一个 PHP 项目 需要一些正则表达式的帮助 我希望能够获取用户输入的货币值并删除所有非数字和小数位 分 Ex 2 000 00 到 2000 2 000 00 美元 到 2000 2abc000 到 2000 2 000 到
  • 在数据转换之前应用验证

    我想将从提交的用户数据中获得的文本字段转换为 Symfony2 中的对象 我使用 DataTransformer 来做到这一点 当我使用 NotEmpty 或 NotNull 等内置验证器或任何以标准方式内置的自定义验证器时 Symfony
  • 当我使用加盐 CRYPT_MD5 加密我的密码时,正在加密什么?

    对字符串使用 md5 总是会产生字母数字加密结果 即 没有符号 然而 当我使用 php crypt 函数 特别是带有盐的 CRYPT MD5 并且它已打开 我已经检查过 时 它返回的假定 md5 哈希看起来不像 md5 哈希 例如 如果我
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • PHP 中消息队列和工作系统的有效架构?

    我正在尝试了解我想要在 PHP 应用程序中实现的消息队列模型和作业 我的目标是卸载需要发送到多个第三方 API 的消息 数据 因此访问它们不会减慢客户端的速度 所以将数据发送到消息队列是理想的 我考虑过仅使用 Gearman 来保存 MQ
  • PHP strtotime +1 个月添加额外一个月[重复]

    这个问题在这里已经有答案了 我有一个简单的变量 可以将今天添加一个月 endOfCycle date Y m strtotime 1 month 今天是 2013 年 1 月 所以我希望返回 2013 02 但我得到的是 2013 03 我
  • 将屏幕宽度获取到 javascript 变量中并通过 ajax 将其发送到 php 页面以避免页面加载

    这是JS检测我的页面命名上的屏幕分辨率index html并将其发送到 php 以便可以使用以下方式检索值 GET 这是我的PHP文件命名的内容process php
  • 使用 file_get_contents 在 php 中进行屏幕缩放

    嗨 我对屏幕抓取很陌生 我正在尝试从酒店预订网站上抓取评论以显示在我的网站上 我已经走到这一步了 但有点卡住了 有人可以帮忙吗 use 文档 http php net manual en class domdocument ph
  • 有没有办法重置特定类的所有静态属性?

    您可能知道 静态属性使测试变得困难 有没有办法将特定类的所有静态属性重置回其初始状态 理想情况下 这不需要为每个类定制代码 但可以通过继承以通用方式使用 或者完全从类外部使用 请不要回复 不要使用静态属性 之类的内容 谢谢 假设您正在使用

随机推荐

  • dart lang 中的自定义注释/元数据

    谁能给我解释一下 Dart 中注释的使用吗 在文档中 我找到了这个例子 library todo class todo final String who final String what const todo this who this
  • 在 android API29+ 中检测来电和去电

    关于在 android 中检测传入和传出呼叫有很多问题 但它们都很旧 而且 android 不推荐使用有用的功能 并且 google play 拒绝我的应用程序 因为我正在使用它们 为了检测拨出电话 我使用了
  • 在聚合管道、MapReduce 或 runCommand 中使用存储的 JavaScript 函数

    有没有办法使用保存为的用户定义函数db system js save 在管道或mapreduce中 您保存到的任何函数system js可供 JavaScript 处理语句使用 例如 where http docs mongodb org
  • 在android自动完成文本视图中覆盖过滤器结果?

    这几天我一直在纠结这个问题 我试图在android中设置一个自动完成文本视图 其中用户输入一个键 自动完成建议是值 但是我现在已经尝试了大约10种不同的方法 扩展BaseAdapter SimpleAdapter 和现在的 ArrayAda
  • 仅从工作副本中删除文件,但不从存储库中删除文件

    由于我在网上找不到上述问题的答案 所以我自己提出了解决方案 这是一个手动过程 但我找不到任何其他标准解决方案 所以这里是 假设你想删除该文件test txt从目录work 现在 如果您通过以下方式强制删除 test txt rm rf 测试
  • 并非所有代码路径都返回“值”

    您好 我正在尝试制作一个主脑游戏 让用户猜测 4 10 之间的数字序列而不是颜色 但由于某种原因 我的 GetRandomNumberCount 和生成随机数给我错误 并非所有代码路径都返回值 任何指导将不胜感激 public static
  • 构建器模式和大量强制参数

    迄今为止我使用的是下列的 http rwhansen blogspot com 2007 07 theres builder pattern that joshua html构建器模式的实现 与描述的实现相反 here http en wi
  • 如何知道哪个应用程序正在读取或写入文件

    Android 或 Android NDK 中是否有任何方法可以知道哪个应用程序正在磁盘或设备内存上读取或写入数据 您可以在输出中查找您的文件 ls l proc fd 为此 您不需要任何特殊工具或根 解释 每个正在运行的进程都有一个条目
  • Lotus Notes 使用 Java api 按日期搜索

    我试图从 Lotus Notes 数据库中按日期选择记录 但在正确设置日期格式方面遇到了麻烦 这是相关代码 public void runNotes Session s try s NotesFactory createSession St
  • 为什么我会得到负值位移的奇怪结果?

    这个问题不是重复的这个问题 https stackoverflow com questions 1857928 right shifting negative numbers in c 我遇到过一种情况 我可能必须将 正 数字左移负值 即
  • 根据查找表替换数据框中的值

    我在替换数据框中的值时遇到一些问题 我想根据单独的表替换值 下面是我正在尝试做的事情的一个例子 我有一张表 其中每一行都是客户 每一列都是他们购买的动物 我们称这个数据框为table gt table P1 P2 P3 1 cat liza
  • 无法将“cv::VideoCapture”转换为“CvCapture*”

    我有一个简单的程序 可以拍摄视频并播放它 尽管它对视频进行了一些图像处理 可以从对话框结果中检索视频 也可以直接通过给出文件路径来检索视频 当我使用CV CvCapture 捕获1 我得到像 capture1 isOpen 这样的属性 ca
  • RequireJS:如何将变量从一个文件传递到另一个文件?

    我将 require 与骨干 骨干形式一起使用 我目前正在使用 RequireJS 将代码分成多个文件 我将模型存储在单独的文件中 并希望单独保留表单验证器 但是 我无法访问一个文件以及依赖于该文件的另一个文件中定义的变量 我得到的是Unc
  • 如何国际化delphi应用程序[重复]

    这个问题在这里已经有答案了 可能的重复 翻译申请 https stackoverflow com questions 12311926 translate application 国际化用 delphi xe2 编写的应用程序的最佳方法是什
  • 执行长字传输到 CPU 需要多少个周期和大小

    该任务针对架构 ColdFire 处理器 MCF5271 我不明白执行到 CPU 的长字传输或字传输需要多少个周期以及什么大小的周期 我正在阅读图表 但不明白其中有何联系 非常感谢任何评论 我附上了两个例子和答案 数据总线大小 https
  • 从文件名获取目录名

    我有一个文件名 C folder foo txt 并且我需要检索文件夹名称 C folder 在 C 中 在 C 中我会做这样的事情 string folder new FileInfo C folder foo txt Directory
  • 在 RMarkdown 中的标题页后插入空白页

    我试图在我的 RMarkdown 文档 pdf 输出 的标题页和目录之间插入空白页 我遵循了所描述的建议here https stackoverflow com questions 28962651 inserting title page
  • 数组的随机打乱

    我需要随机洗牌以下数组 int solutionArray 1 2 3 4 5 6 6 5 4 3 2 1 有什么功能可以做到这一点吗 使用集合来打乱原始类型数组有点过分了 自己实现该功能非常简单 例如使用费舍尔 耶茨洗牌 http en
  • 如何在 Apache httpclient 中使用指数退避策略?

    The docs https hc apache org httpcomponents client dev httpclient cache apidocs org apache http impl client cache Expone
  • 即使我使用 Content-Disposition: inline,PHP 也会强制下载 PDF 文件

    如果可能的话 我正在尝试在浏览器中显示 PDF 而且我知道我可以在 Chrome 中执行此操作 这就是我正在测试的版本 问题是 每次我尝试时 它都会提示下载 我正在使用 PHP 会话 所以我知道发送了一些无关的标头 所以我调用header