我正在使用PhpMyAdmin版本4.2运行localhost mysql服务器。我创建了一个带有MEDIUMBLOB列的表来存储文件。我可以正确上传* .doc文件,但是当我单击文件链接时,它会将其作为“tablename-columnname.bin”bin文件下载。
然后我尝试将此“tablename-columnname.bin”手动重命名为“original_file.doc”,并且可以正确打开文档。
问题:为什么phpmyadmin不按原样下载文件?我该怎么办才能修复它?我知道一点php
谢谢!
答案 0 :(得分:1)
使用'标题'在回显文件之前
header('Content-type: application/msword');
以动态方式查找“内容类型”'用于存储'文件名'用'扩展'在数据库中。
答案 1 :(得分:0)
为了使它有点动态(基于MIME),我做了以下更改:
在tbl_get_field.php文件中,最后几行:
$mime = PMA_detectMIME($result); switch($mime){ case 'image/jpeg': $extension = 'jpg'; case 'image/gif': $extension = 'gif'; case 'image/png': $extension = 'png'; case 'application/pdf': $extension = 'pdf'; default: $extension = 'bin'; } PMA_downloadHeader( $table . '-' . $_GET['transform_key'] . '.' . $extension, $mime, strlen($result) ); echo $result;
上面的代码应输出具有正确扩展名的文件,而不是始终" .bin"。
在mime.lib.php文件中,我们需要检测更多MIME案例:
function PMA_detectMIME(&$test) { $len = strlen($test); if ($len >= 2 && $test[0] == chr(0xff) && $test[1] == chr(0xd8)) { return 'image/jpeg'; } if ($len >= 3 && substr($test, 0, 3) == 'GIF') { return 'image/gif'; } if ($len >= 4 && substr($test, 0, 4) == "\x89PNG") { return 'image/png'; } return 'application/octet-stream'; }
我想在此添加pdf和word doc,但我不知道如何根据流字符确定其MIME类型