Сначала найдите расширение:
$pos = strrpos($filename, '.');
if ($pos === false)
{
// file has no extension; do something special?
$ext = "";
}
else
{
// includes the period in the extension; do $pos + 1 if you don't want it
$ext = substr($filename, $pos);
}
Затем назовите свой файл как хотите и добавьте к имени расширение:
$newFilename = "foobar" . $ext;
move_uploaded_file($_FILES['picture']['tmp_name'], 'peopleimages/' . $newFilename);
РЕДАКТИРОВАТЬ Думая об этом, все это не является оптимальным. Расширения файлов чаще всего описывают тип файла, но это не всегда так. Например, вы можете переименовать файл .png в расширение .jpg, и большинство приложений все равно обнаружат, что это файл png. Кроме этого, некоторые ОС просто не используют расширения файлов для определения типа файла.
При загрузке $_FILE
вы также получаете элемент type
, который представляет MIME-тип файла, который вы получили. Если вы можете, я предлагаю вам положиться на него, а не на данное расширение:
$imagetypes = array(
'image/png' => '.png',
'image/gif' => '.gif',
'image/jpeg' => '.jpg',
'image/bmp' => '.bmp');
$ext = $imagetypes[$_FILES['myfile']['type']];
Вы можете иметь более полный список типов MIME здесь .