rfe #1025696 [browse] Add direct download of binary fields.

This commit is contained in:
Michal Čihař
2010-01-22 16:17:41 +00:00
parent 8fd8a5fd17
commit bdaedd3f83
3 changed files with 53 additions and 3 deletions

View File

@@ -28,6 +28,7 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA
+ rfe #2835109 [interface] Move ^1 to the end of message. + rfe #2835109 [interface] Move ^1 to the end of message.
+ rfe #854911 [interface] Grey out non applicable actions in structure + rfe #854911 [interface] Grey out non applicable actions in structure
+ [interface] Allow to create new table from navigation frame (in light mode). + [interface] Allow to create new table from navigation frame (in light mode).
+ rfe #1025696 [browse] Add direct download of binary fields.
3.3.0.0 (not yet released) 3.3.0.0 (not yet released)
+ rfe #2308632 [edit] Use hex for (var)binary fields, + rfe #2308632 [edit] Use hex for (var)binary fields,

View File

@@ -1320,7 +1320,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
if ($bs_reference_exists) { if ($bs_reference_exists) {
$blobtext = PMA_BS_CreateReferenceLink($row[$i], $db); $blobtext = PMA_BS_CreateReferenceLink($row[$i], $db);
} else { } else {
$blobtext = PMA_handle_non_printable_contents('BLOB', (isset($row[$i]) ? $row[$i] : ''), $transform_function, $transform_options, $default_function, $meta); $blobtext = PMA_handle_non_printable_contents('BLOB', (isset($row[$i]) ? $row[$i] : ''), $transform_function, $transform_options, $default_function, $meta, $_url_params);
} }
$vertical_display['data'][$row_no][$i] = ' <td align="left"' . $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . '">' . $blobtext . '</td>'; $vertical_display['data'][$row_no][$i] = ' <td align="left"' . $mouse_events . ' class="' . $class . ($condition_field ? ' condition' : '') . '">' . $blobtext . '</td>';
@@ -1376,7 +1376,7 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) {
} else { } else {
// we show the BINARY message and field's size // we show the BINARY message and field's size
// (or maybe use a transformation) // (or maybe use a transformation)
$row[$i] = PMA_handle_non_printable_contents('BINARY', $row[$i], $transform_function, $transform_options, $default_function, $meta); $row[$i] = PMA_handle_non_printable_contents('BINARY', $row[$i], $transform_function, $transform_options, $default_function, $meta, $_url_params);
} }
} }
@@ -2248,7 +2248,7 @@ function PMA_displayResultsOperations($the_disp_mode, $analyzed_sql) {
* @param object $meta the meta-information about this field * @param object $meta the meta-information about this field
* @return mixed string or float * @return mixed string or float
*/ */
function PMA_handle_non_printable_contents($category, $content, $transform_function, $transform_options, $default_function, $meta) { function PMA_handle_non_printable_contents($category, $content, $transform_function, $transform_options, $default_function, $meta, $url_params = array()) {
$result = '[' . $category; $result = '[' . $category;
if (is_null($content)) { if (is_null($content)) {
$result .= ' - NULL'; $result .= ' - NULL';
@@ -2272,6 +2272,10 @@ function PMA_handle_non_printable_contents($category, $content, $transform_funct
// in this case, restart from the original $content // in this case, restart from the original $content
$result = htmlspecialchars(PMA_replace_binary_contents($content)); $result = htmlspecialchars(PMA_replace_binary_contents($content));
} }
/* Create link to download */
if (count($url_params) > 0) {
$result = '<a href="tbl_get_field.php' . PMA_generate_common_url($url_params) . '">' . $result . '</a>';
}
} }
} }
return($result); return($result);

45
tbl_get_field.php Normal file
View File

@@ -0,0 +1,45 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Displays table structure infos like fields/columns, indexes, size, rows
* and allows manipulation of indexes and columns/fields
* @version $Id$
* @package phpMyAdmin
*/
/**
*
*/
require_once './libraries/common.inc.php';
/**
* Gets tables informations
*/
require_once './libraries/tbl_info.inc.php';
PMA_checkParameters(array('db', 'table', 'where_clause', 'transform_key'));
if (!PMA_DBI_get_columns($db, $table)) {
PMA_mysqlDie($strInvalidTableName);
}
$result = PMA_DBI_fetch_value('SELECT ' . PMA_backquote($transform_key) . ' FROM ' . PMA_backquote($table) . ' WHERE ' . $where_clause . ';');
/* Avoid corrupting data */
@ini_set('url_rewriter.tags','');
header('Content-Type: application/octet-stream');
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') {
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else {
header('Pragma: no-cache');
// test case: exporting a database into a .gz file with Safari
// would produce files not having the current time
// (added this header for Safari but should not harm other browsers)
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
}
echo $result;
?>