Allow more SQL files to be uploaded at the same time (thanks to Frantisek Svoboda)

This commit is contained in:
Jakub Vrana 2013-04-26 13:26:08 -07:00
parent ada8917e43
commit b0b4cb1576
3 changed files with 32 additions and 16 deletions

View file

@ -569,22 +569,35 @@ function pagination($page, $current) {
*/ */
function get_file($key, $decompress = false) { function get_file($key, $decompress = false) {
$file = $_FILES[$key]; $file = $_FILES[$key];
if (!$file || $file["error"]) { if (!$file) {
return $file["error"]; return null;
} }
$return = file_get_contents($decompress && ereg('\\.gz$', $file["name"]) ? "compress.zlib://$file[tmp_name]" foreach ($file as $key => $val) {
: ($decompress && ereg('\\.bz2$', $file["name"]) ? "compress.bzip2://$file[tmp_name]" $file[$key] = (array) $val;
: $file["tmp_name"] }
)); //! may not be reachable because of open_basedir $return = array();
if ($decompress) { foreach ($file["error"] as $key => $error) {
$start = substr($return, 0, 3); if ($error) {
if (function_exists("iconv") && ereg("^\xFE\xFF|^\xFF\xFE", $start, $regs)) { // not ternary operator to save memory return $error;
$return = iconv("utf-16", "utf-8", $return);
} elseif ($start == "\xEF\xBB\xBF") { // UTF-8 BOM
$return = substr($return, 3);
} }
$name = $file["name"][$key];
$tmp_name = $file["tmp_name"][$key];
$content = file_get_contents($decompress && ereg('\\.gz$', $name) ? "compress.zlib://$tmp_name"
: ($decompress && ereg('\\.bz2$', $name) ? "compress.bzip2://$tmp_name"
: $tmp_name
)); //! may not be reachable because of open_basedir
if ($decompress) {
$start = substr($content, 0, 3);
if (function_exists("iconv") && ereg("^\xFE\xFF|^\xFF\xFE", $start, $regs)) { // not ternary operator to save memory
$content = iconv("utf-16", "utf-8", $content);
} elseif ($start == "\xEF\xBB\xBF") { // UTF-8 BOM
$content = substr($content, 3);
}
}
$return[] = $content;
} }
return $return; //! support SQL files not ending with semicolon
return implode("\n\n\n", $return);
} }
/** Determine upload error /** Determine upload error

View file

@ -25,7 +25,7 @@ if (!$error && $_POST) {
: "compress.bzip2://adminer.sql.bz2" : "compress.bzip2://adminer.sql.bz2"
)), "rb"); )), "rb");
$query = ($fp ? fread($fp, 1e6) : false); $query = ($fp ? fread($fp, 1e6) : false);
} elseif ($_FILES && $_FILES["sql_file"]["error"] != UPLOAD_ERR_NO_FILE) { } elseif ($_FILES && $_FILES["sql_file"]["error"][0] != 4) { // 4 - UPLOAD_ERR_NO_FILE
$query = get_file("sql_file", true); $query = get_file("sql_file", true);
} }
if (is_string($query)) { // get_file() returns error as number, fread() as false if (is_string($query)) { // get_file() returns error as number, fread() as false
@ -180,7 +180,9 @@ if ($_POST) {
textarea("query", $q, 20); textarea("query", $q, 20);
echo ($_POST ? "" : "<script type='text/javascript'>document.getElementsByTagName('textarea')[0].focus();</script>\n"); echo ($_POST ? "" : "<script type='text/javascript'>document.getElementsByTagName('textarea')[0].focus();</script>\n");
echo "<p>" . (ini_bool("file_uploads") echo "<p>" . (ini_bool("file_uploads")
? lang('File upload') . ': <input type="file" name="sql_file"' . ($_FILES && $_FILES["sql_file"]["error"] != 4 ? '' : ' onchange="this.form[\'only_errors\'].checked = true;"') . '> (&lt; ' . ini_get("upload_max_filesize") . 'B)' // ignore post_max_size because it is for all form fields together and bytes computing would be necessary ? lang('File upload') . ': <input type="file" name="sql_file[]" multiple'
. ($_FILES && $_FILES["sql_file"]["error"][0] != 4 ? '' : ' onchange="this.form[\'only_errors\'].checked = true;"') // 4 - UPLOAD_ERR_NO_FILE
. '> (&lt; ' . ini_get("upload_max_filesize") . 'B)' // ignore post_max_size because it is for all form fields together and bytes computing would be necessary
: lang('File uploads are disabled.') : lang('File uploads are disabled.')
); );

View file

@ -1,4 +1,5 @@
Adminer 3.6.5-dev: Adminer 3.7.0-dev:
Allow more SQL files to be uploaded at the same time
Print run time next to executed queries Print run time next to executed queries
Disable SQL export when applying functions in select Disable SQL export when applying functions in select
Fix handling of POINT data type (bug #3582578) Fix handling of POINT data type (bug #3582578)