【问题标题】:How to download the file uploaded to a BLOB field using PhpMyAdmin?如何使用 PhpMyAdmin 下载上传到 BLOB 字段的文件?
【发布时间】:2014-07-24 17:40:15
【问题描述】:

我正在使用 PhpMyAdmin 4.2 版运行 localhost mysql 服务器。我创建了一个带有 MEDIUMBLOB 列的表来存储文件。我可以正确上传 *.doc 文件,但是当我单击文件链接时,它会将其下载为“tablename-columnname.bin”bin 文件。

然后我尝试手动将这个“tablename-columnname.bin”重命名为“original_file.doc”,文档就可以正确打开了。

问题:为什么 phpmyadmin 不按原样下载文件?我能做些什么来修复它?我懂一点php

谢谢!

【问题讨论】:

    标签: php mysql phpmyadmin blob


    【解决方案1】:

    为了让它有点动态(基于 MIME),我做了以下更改:

    在 tbl_get_field.php 文件的最后几行:

    $mime = PMA_detectMIME($result); 开关($mime){ 案例“图像/JPEG”: $extension = 'jpg'; 案例“图像/gif”: $extension = 'gif'; 案例“图像/PNG”: $extension = 'png'; 案例“申请/pdf”: $extension = 'pdf'; 默认: $extension = 'bin'; } PMA_downloadHeader( $表。 '-' 。 $_GET['transform_key'] 。 '。' . $扩展, $哑剧, strlen($结果) ); 回显$结果;

    上面的代码应该输出带有正确扩展名的文件,而不是总是“.bin”。

    在mime.lib.php文件中,我们需要检测更多的MIME案例:

    函数 PMA_detectMIME(&$test) { $len = strlen($test); if ($len >= 2 && $test[0] == chr(0xff) && $test[1] == chr(0xd8)) { 返回“图像/JPEG”; } if ($len >= 3 && substr($test, 0, 3) == 'GIF') { 返回“图像/gif”; } if ($len >= 4 && substr($test, 0, 4) == "\x89PNG") { 返回“图像/png”; } 返回“应用程序/八位字节流”; }

    我想在其中添加pdf和word doc,但我不知道如何根据流字符确定它们的MIME类型

    【讨论】:

      【解决方案2】:

      在回显文件之前使用“标题”

      header('Content-type: application/msword');
      

      用于查找“内容类型”的动态方法,用于在数据库中存储“文件名”和“扩展名”。

      【讨论】:

        猜你喜欢
        • 2010-10-25
        • 2012-02-04
        • 2015-04-23
        • 2011-02-06
        • 2012-03-01
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        • 2011-09-27
        相关资源
        最近更新 更多