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

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

【问题讨论】:

标签: phpmyadmin blob


【解决方案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';
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-10-10
              • 1970-01-01
              • 1970-01-01
              • 2011-09-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多