PHP:为什么这个强制 mime 下载会添加 2 个额外的空行?

2023-12-09

我编写了一个 PHP 脚本来创建 .txt 制表符分隔文件。我需要将其强制下载到网络浏览器。它完成了这一切,但是当我将文件与源进行比较时,强制下载的文件包含两个额外的空行。这是代码:

// Force download of the tab del .txt file to the web browser:

    header('Content-Type: application/download');
    header("Content-Disposition: attachment; filename=$tab_del_file");
    header("Content-Length: " . filesize($tab_del_file));

    $fp = fopen($tab_del_file, "r");
    fpassthru($fp);
    fclose($fp);

Linux Shell 命令比较两个文件并显示有额外的空行: $ diff example.txt /tmp/example.txt 25a26,27

我将下载的 example.txt sftp 到 /tmp 目录,这样我就可以在服务器上进行比较。为什么下载的版本中会添加两个空行?修复方法是什么?谢谢!


由于 php 代码本身看起来不错并且不会产生新行,因此这只有一个原因。你有一个结束语?>标记和文件末尾的额外新行:

?>
<--- empty line
<--- empty line

请注意,php 标签之外的内容不会被 PHP 解析,只会转发到浏览器。

解决办法:去掉封口?>标签或额外的新行。我通常更喜欢不使用?>


顺便说一句,我应该提到这一点:

$fp = fopen($tab_del_file, "r");
fpassthru($fp);
fclose($fp);

可以简化为

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

PHP:为什么这个强制 mime 下载会添加 2 个额外的空行? 的相关文章

  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 当轴标签分成多条线时会偏离中心

    我在用graph twoway scatter并添加我自己的ylabels 我经常有很长的标签并将它们分成多行 然而当我想要破解的时候却遇到了问题some标签超过两行 但不超过两行 当我这样做时 单行标签相对于它们的中心是偏离的tick标记
  • Laravel 如何使用 Eloquent 获取对象的行号?

    我想根据用户的创建日期了解用户的位置 我该如何使用 Eloquent 来做到这一点 我希望能够做这样的事情 User getRowNumber user obj 我想你想要 MySQL 解决方案 所以你可以这样做 DB statement
  • 选定的项目数据从表格到 ZK 中的文本框

    我正在开发一个小型 Web 应用程序 用于存储医院患者的数据 以便更多地了解 zk 及其令人惊叹的功能 这次我的目标是 当我选择一行 复选标记 时 我想将该行的数据 红色 获取到相应的文本框 蓝色 当我选择表的任何行时 这将起作用 也许这是
  • Python - CSV:具有不同长度行的大文件

    简而言之 我有一个 20 000 000 行的 csv 文件 它具有不同的行长度 这是由于陈旧的数据记录器和专有格式造成的 我们得到以下格式的最终 结果作为 csv 文件 我的目标是将此文件插入到 postgres 数据库中 我怎样才能做到
  • HomeAsUp 按钮在 Android 4.2.2 和 Appcompat 21.0.0 中无效

    我使用 Appcompat 21 中的工具栏而不是标准操作栏 一切都很顺利 除了HomeAsUp额外活动中的按钮不起作用 当我打开PrefsActivity 下面的代码片段 HomeAsUp按钮正常显示 一个向左的小箭头 当我单击按钮时 从
  • 如何调整 html canvas 元素的大小?

    我在 html 中静态定义了一个带有宽度和高度的画布元素 如果我尝试使用 JavaScript 动态调整其大小 设置新的宽度和高度 在画布的属性上或通过样式属性 我在 Firefox 中收到以下错误 未捕获的异常 异常 对WrappedNa
  • WINAPI - 设置组合框下拉列表的背景和文本颜色

    所以我尝试使用 Common Controls 和 WINAPI 设置 ComboBox 的背景和文本颜色 我确实设法设置了组合框本身的背景和文本颜色 但其下拉列表的颜色保持不变 这几乎就是我所做的 创建组合框时 我使用了CBS DROPD
  • 我需要一个 php 正则表达式来用另一个标签替换一个标签

    这是我需要能够做到的 我需要匹配以下标签 span text sample span 我需要用 html3 兼容标签替换 span 但保留中间的文本 替换后的最终标签应如下所示 u text sample u 我只是不擅长正则表达式 似乎无
  • ILMerge 替代方案,如何将应用程序的依赖 DLL 嵌入 EXE 文件中?

    如此处所述我试图将 dll 嵌入到 exe 应用程序中 以便只分发一个 exe 但是当我尝试在安装了完整 NET 4 的 xp 计算机上运行我的应用程序时 它只是崩溃而没有错误 我将以下代码放在主要方法 STAThread static v
  • 发布编译时 WCF .SVC Debug="true" 被忽略?

    默认情况下 SVC 文件包含 Debug true 我想知道如果您编译发布版本是否会忽略它 或者仍然使用调试符号进行编译 Ex Debug true属性在 ServiceHost仅当您将服务编写为inline svc 文件中的代码 或在 中
  • 如何在不同条件下选择同一字段两次并将结果显示为单独的字段

    我想用 C 创建一个表适配器 如下所示 我希望在不同的条件下在表中使用相同的字段两次 并且它必须显示为两个不同的字段 这是我的源表 来自AttendanceReg我需要的表Count每个学生的记录基于AttendStatus找出他们在的天数
  • 如何判断 Pandas 中的值是否随维度变化

    假设我有一些特定日期的客户数据 我想看看他们的地址是否已更改 超过那些日期 理想情况下 我想将发生更改的两列复制到新表中 或者只是获取总更改量的指标 所以 如果我有一张像这样的桌子 Date Customer Address 12 31 1
  • 如何获得倒排索引?

    我新使用 Spark 如何使用 Spark 获取 csv 文件的倒排索引 我有 csv 文件 df show id title tags closeddate 48702270 null null null 48702455 null
  • 使用 jQuery jsonp 跨域调用 ASP.NET Web 服务

    我的问题是已知问题并已讨论here and here 但即使在阅读并实施了建议的解决方案之后 我也无法完成这项工作 问题 Web 服务返回 xml 而不是 json
  • 阐明 Java 对 Unicode 的进化支持 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我发现 Java 对 char 和 codepoint 的区分很奇怪而且不合适 例如 字符串是字符数组或 字母表中出现的字母 与代码点相反 代码点可以是单个字母 也可能是复合或代理对 然而
  • 在 Mac OS 上使用 gdb 进行 Fortran 调试?

    我在使用 gdb 在 Mac OS Mountain Lion 上调试 Fortran 程序时遇到问题 当我调用 gdb fortran executable name 从终端 我收到以下消息 This GDB was configured
  • 处理/转置 Pandas Dataframe

    我得到了以下熊猫数据框 Id Category 1 type 2 1 type 3 1 type 2 2 type 1 2 type 2 我需要处理上述数据帧并将其转置为 Id Category type 1 Category type 2
  • 如何使用方法引用/java 8 泛化实用函数

    我遇到过一种常见情况 我有一个对象列表 需要生成一个带有单个属性的逗号分隔字符串 然后每个属性都用单引号引起来 2 示例 public String partIDsToString List
  • 64 位机器上 QWORD 的大小是多少?

    我目前正在寻找上述问题的答案 到目前为止 我发现人们说 字大小是指处理器寄存器的大小 这表明在 64 位机器上 字大小为 64 位 因此 QWORD 4 字 的大小为 256 位 但另一方面 我发现了类似的来源this有人说大小为 128
  • PHP:为什么这个强制 mime 下载会添加 2 个额外的空行?

    我编写了一个 PHP 脚本来创建 txt 制表符分隔文件 我需要将其强制下载到网络浏览器 它完成了这一切 但是当我将文件与源进行比较时 强制下载的文件包含两个额外的空行 这是代码 Force download of the tab del