diff --git a/repository/upload/lib.php b/repository/upload/lib.php index 7420230474c..5b443a52a5a 100644 --- a/repository/upload/lib.php +++ b/repository/upload/lib.php @@ -155,17 +155,22 @@ class repository_upload extends repository { $ext = ''; $match = array(); $filename = clean_param($_FILES[$elname]['name'], PARAM_FILE); - if (preg_match('/\.([a-z0-9]+)$/i', $filename, $match)) { - if (isset($match[1])) { - $ext = $match[1]; - } - } - $ext = !empty($ext) ? $ext : ''; - if (preg_match('#\.(' . $ext . ')$#i', $saveas_filename)) { - // saveas filename contains file extension already + if (strpos($filename, '.') === false) { + // File has no extension at all - do not add a dot. $record->filename = $saveas_filename; } else { - $record->filename = $saveas_filename . '.' . $ext; + if (preg_match('/\.([a-z0-9]+)$/i', $filename, $match)) { + if (isset($match[1])) { + $ext = $match[1]; + } + } + $ext = !empty($ext) ? $ext : ''; + if (preg_match('#\.(' . $ext . ')$#i', $saveas_filename)) { + // saveas filename contains file extension already + $record->filename = $saveas_filename; + } else { + $record->filename = $saveas_filename . '.' . $ext; + } } }