在 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)