Add MIME type detection to download (at least for images).

RFE#2937494
This commit is contained in:
Michal Čihař
2010-01-25 11:51:15 +00:00
parent ecc4913a8c
commit 4129e18938
2 changed files with 29 additions and 1 deletions

27
libraries/mime.lib.php Normal file
View File

@@ -0,0 +1,27 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* MIME detection code.
*
* @version $Id$
* @package phpMyAdmin
* @todo Maybe we could try to use fileinfo module if loaded
*/
/**
* Tries to detect MIME type of content.
*/
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';
}
?>

View File

@@ -10,6 +10,7 @@
* Common functions.
*/
require_once './libraries/common.inc.php';
require_once './libraries/mime.lib.php';
/* Check parameters */
PMA_checkParameters(array('db', 'table', 'where_clause', 'transform_key'));
@@ -37,7 +38,7 @@ if ($result === false) {
/* Avoid corrupting data */
@ini_set('url_rewriter.tags','');
header('Content-Type: application/octet-stream');
header('Content-Type: ' . PMA_detectMIME($result));
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: attachment; filename="' . $table . '-' . $transform_key . '.bin"');
if (PMA_USR_BROWSER_AGENT == 'IE') {