在 phpMyAdmin 中查看 Blob 的内容

Posted

技术标签:

【中文标题】在 phpMyAdmin 中查看 Blob 的内容【英文标题】:Viewing Content Of Blob In phpMyAdmin 【发布时间】:2011-01-12 09:29:14 【问题描述】:

很抱歉这个菜鸟问题,但带圆圈的按钮是什么意思,我如何查看 blob 的内容? (来源:rigel222.com)

【问题讨论】:

可以使用打印预览模式查看吗? 这似乎是与***.com/questions/2721302/… 相同的问答空间? 【参考方案1】:

phpMyAdmin 中已经有一个处理程序来显示 blob 数据 为此,只需在 url 末尾添加“&display_blob=true”。 更改网址如下:

*****phpmyadmin/sql.php?db=database_name&table=table_name

*****phpmyadmin/sql.php?db=database_name&table=table_name&display_blob=true

【讨论】:

【参考方案2】:

早期版本的 phpmyadmin 有一个名为

的设置
$cfg['ShowBlob']              = TRUE;

这将允许您在浏览器中查看 blob 的内容。您应该注意,如果您将二进制文件存储在 blob 中,这会导致混乱,因为您会在浏览器窗口中看到无尽的 gobblygok。有些人(比如我)决定他们的应用程序需要使用 BLOB 类型来存储文本(当时这似乎是一个不错的决定,而且我记得我在做出决定时有一些想法)。但是 phpmyadmin 决定通过弃用此配置设置来阻止这种情况。可以理解,因为这样做可能会导致相当多的支持请求。显然,我们的想法是将人们转移到 TEXT 字段类型上。

愉快地显示 blob 的内容已移至用户界面而不是配置中。

在浏览时查看 blob 内容的最简单方法是单击链接:

+ 选项

很高兴您的屏幕截图已经在顶部图像的顶部显示了 + 选项。

这将显示一个允许您显示 blob(和二进制文件)的表单。点击它,它会将它添加到您选择的会话中,确保您从那时起看到内容。

您也可以使用打印视图获得相同的结果:

打印视图(带全文)

位于页面底部。

遗憾的是,如果您总是想显示 blob,这两种技术都无济于事,因为它似乎经常重置。您可以通过添加行来解决此问题

$_GET['display_blob'] = true;

在 sql.php 文件的开头。我认为可能有更好的方法来做到这一点,我希望其他人能提出来......

(注意:正如 Rodrigo 指出的,您可以通过在 URL 上附加 &display_bob=true 来手动实现此效果)

您关于“选择文件”按钮的具体问题很简单。 Blob 的大部分用途是在数据库中存储数字文件。此按钮允许您将新文件上传到数据库中。如果您选择一个文件并单击“开始”,它将尝试将该文件的内容填充到您的 blob 列中。

请注意,简单地显示 blob 的内容可能不是其他用户想要的。当我在使用此选项显示 blob 之前查看“blob 摘要”时,我看到 blob 大小最大为 55 个字节。您的示例具有更大的值,因为看起来您正在存储非常小的文本文件,我认为这意味着文本段落。如果大小大于 10 千字节,则它可能是一个只会显示 gooblegok 的二进制文件。

如果您想智能地下载二进制文件(而不是将它们显示为文本),我认为您需要研究 phpmyadmin 所谓的 blobstreaming。

【讨论】:

在这种情况下,哪些是“早期版本”,哪些是 2010 年 4 月的当前版本?对于带有 mysql 客户端 5.0.51a 的 phpMyAdmin 2.11.8.1deb5+lenny8,我在任何地方都找不到“+ 选项”链接 :-(. 我认为只有非常早期的版本......例如适用于 php v4 的东西。【参考方案3】:

Save Link As txt file

你可以右键点击phpMyAdmin,将链接另存为txt文件扩展名,查看blob文本文件类型

【讨论】:

不要将链接发布为答案,而是添加一些文本来解释此答案如何帮助 OP 解决当前问题。谢谢【参考方案4】:

对于新访问者,查看 BLOB 列的另一种方法是 QUOTE() 函数。为方便起见,您可以从中创建视图。 (视图的行为类似于表,但它实际上是一种已保存的查询):

CREATE VIEW log_text AS SELECT BlobID, FileName, CAST(QUOTE(Content) AS CHAR) FROM log;

您必须将结果转换为 CHAR,因为 QUOTE(binary) 仍然是二进制的。这可能会导致一些混乱(正如@ftrotter 所说),因为 QUOTE 只翻译控制字符,而不是超 ASCII 字符。

为了减少混乱,请使用HEX()。

【讨论】:

【参考方案5】:

我在 config.inc.php 中添加了额外的内容,对我有很大帮助

# Show BLOB data on table browse pages.  Hack to hardcode all requests.
$_REQUEST['display_blob'] = true;

【讨论】:

【参考方案6】:

“选择文件”对话框允许您在工作站上选择一个文件并将其上传到该行的 blob 列中。

如果您的 BLOB 包含 JPEG 或 PNG 图像,您实际上可以在浏览时查看它们的缩略图,当您单击缩略图时会显示完整的图像。见https://phpmyadmin.readthedocs.org/en/latest/transformations.html

【讨论】:

【参考方案7】:

新版本的 PHPMyAdmin 似乎需要稍微不同的解决方案

$cfg['ProtectBinary'] = FALSE;

将其放在文件末尾/etc/phpmyadmin/config.inc.php

或者通过使用这一个衬垫

echo "\$cfg['ProtectBinary'] = FALSE;" | sudo tee -a /etc/phpmyadmin/config.inc.php

这在 PHPMyAdmin 版本 3.4.10.1deb1 上对我有用

【讨论】:

【参考方案8】:

&display_blob=true 放在 URL 的末尾。

【讨论】:

【参考方案9】:

我认为最好的解决方案是改变这一行:

$cfg['Servers'][$i]['extension'] = 'mysql';

到这里:

$cfg['Servers'][$i]['extension'] = 'mysqli';

如果您有可用的 mysqli 扩展,请使用它。它更安全,更优化,默认情况下它更好地处理 utf-8 的 BLOB 类型。您的 [BLOB] 条目应该开始显示为它们的值,而无需添加任何其他特殊配置选项。

【讨论】:

虽然我相信您的答案很有用,但请注意样板复制和粘贴答案,这些往往被标记为(就像这个一样)重复和可能的垃圾邮件。 作为记录,这两个答案最初都是由我撰写的。谢谢。 我知道它们都是由您创作的,但它们被标记为相同,这意味着它们有被社区通过 10k rep 用户 mod 工具标记为垃圾邮件的风险。只要注意让它们适合这个问题,也许会重新调整一下措辞。这对你自己的好处比对任何人都好。谢谢。 不工作。 $cfg['Servers'][$i]['extension'] = 'mysqli';

以上是关于在 phpMyAdmin 中查看 Blob 的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PhpMyAdmin 下载上传到 BLOB 字段的文件?

很奇怪这个var变量一定要放在事件里面。 mysql中BLOB字段内容如何查看。

如何在 Angular Web 中显示 blob 内容(doc、ppt、xls)

MySQL 使用客户端以及SELECT 方式查看 BLOB 类型字段内容总结

如何从本地主机查看 ReactJS 中的图像

如何从 Oracle SQL 中的 BLOB 获取文本内容