У меня есть «дилемма» и интересно, что такое лучшая практика бизнеса.Какова наилучшая практика для проверки имени файла?
Я использую Uploadify для загрузки изображений. Теперь мне нужно проверить имя файла перед сохранением файла.
Я рассмотрел различные решения, но не могу перейти к одному хорошему решению.
Вот мои критерии:
- Имя файла должно быть все в нижнем регистре
- Имя файла может содержать только Charaters [а-Z0-9_-]
- я должен быть в состоянии переименовать файл
Как бы вы шли, если имя файла my.file(name).jpeg
?
Я могу взорвать имя файла на '.' и сохраните расширение, затем выполните размолвку, чтобы снова получить имя файла. Но не уверен, что это лучшее решение.
У меня есть следующие функции, которые помогают немного:
function getExts($filename)
{
$exts = explode("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
function validFilename($filename)
{
$filename = str_replace(" ", "_", $filename);
$pattern = "/[^[a-z0-9_-]/";
return preg_replace($pattern, "", strtolower($filename));
}
UPDATE 1
Я ПОЛУЧАТЬ файл через $ _FILES. Это дает мне следующие данные:
- $ _FILES [ "Файл"] [ "имя"] - имя загруженного файла
- $ _FILES [ "Файл"] [ "тип"] - тип загруженного файла
- $ _FILES ["file"] ["size"] - размер в байтах загруженного файла
- $ _FILES ["file"] ["tmp_name"] - имя временной копии файла, хранящегося на сервере
- $ _FILES ["file"] ["error"] - код ошибки в результате загрузки файла
UPDATE 2
Я только что нашел что-то. Я мог бы использовать getimagesize, который вернет массив из 7 элементов. Один из этих элементов [2] - IMAGETYPE_XXX.
Так что попробуйте использовать этот код:
function getExts2($filename)
{
list(,,$type) = getimagesize($filename);
return $type;
}
Но он возвращается только номер 2 ...
(я также попытался с помощью exif_imagetype, но только получить PHP Ошибка: Вызов неопределенной function.)
Тип, возвращаемый 'getimagesize', может быть преобразован в расширение файла с помощью функции' image_type_to_extension': http://us2.php.net/function.image_type_to_extension –
@Ben: см. Мои комментарии об использовании getimagesize. – Steven