XAMPP,PHP:echo 为从数据库读取的 blob 添加了两个空格

Posted

技术标签:

【中文标题】XAMPP,PHP:echo 为从数据库读取的 blob 添加了两个空格【英文标题】:XAMPP, PHP: echo adds two spaces to blob read from database 【发布时间】:2019-11-13 19:22:35 【问题描述】:

我从 mysql 数据库中读取 blob(word 2010 文档)并将其存储在 $data 变量中。当我像这样直接将数据存储在 php 中时:

file_put_contents('c:\\temp\\dump.docx', $data);

我可以在 Word 中打开 dump.docx(大小与原始文件匹配)。如果我尝试像这样发送 $data:

ob_start();
header('Content-disposition: attachment; filename=' . $name);
header('Content-type: ' . $type);
ob_clean();
echo $data;
ob_end_flush();
exit;

存储的文件长了两个字节。前面有两个空格:

为了检查我是否不输出这些空格,我在 echo 之前调用了 ob_get_contents() 并将内容转储到文件中。文件有零字节。 所以看起来 echo 正在产生这两个字节。

【问题讨论】:

你能在第二位显示所有代码吗,你在十六进制查看器中打开什么文件,临时文件或下载文件。同时删除所有 ob_* 的东西,它不需要并且可能隐藏了潜在的问题。 您的代码中<?php 之前可能有两个空格。 感谢您的建议。正如我在自己的回答中所解释的,这是由于之前的 ob_start 调用(这不是我的代码,所以我不知道)。 【参考方案1】:

这是帮助我的帖子: https://drupal.stackexchange.com/questions/163628/extra-space-at-beginning-of-downloaded-image/163644

ob_start 已经被更早地调用过。我只需要在发送内容之前调用 ob_clean()。

【讨论】:

有趣的是,我似乎一遍又一遍地遵循相同的模式,直到我在这里提出问题才找到解决方案。然后在发布后 5 分钟内以某种方式出现答案:)

以上是关于XAMPP,PHP:echo 为从数据库读取的 blob 添加了两个空格的主要内容,如果未能解决你的问题,请参考以下文章

模块“xampp-control.exe”中地址 005AA712 处的 Xampp 访问冲突。读取地址 00000042

TwitterAPIExchange PHP Xampp SSL 认证问题

怎么修改XAMPP中PHP版本?

XAMPP:如何为 PHP 配置 Apache

将 Node.js 对象设置为从文件读取的数据

PHP中没有从echo中读取字符串ID