выдерну из своего кода, может пригодится... 
| Код | // здесь будем хранить ошибки $error = array(); // определяем правила для имён $preg = '/\.[a-zA-Z0-9_]{1,}$/i';
// проверка расширения файла $file_ext_tmp = preg_match($preg, $_FILES['file']['name'], $tmp); if (!$file_ext_tmp){ // это типа расширение должно быть и должно быть нормальным. Правило общее, для картинок можно упростить проверку $error[] = "Ошибка ... с расширением"; }else{ $file['ext'] = strtolower(str_replace('.', '', $tmp[0])); }
// временное имя файла $filename_temp = $_FILES['file']['tmp_name']; // проверка имени файла $file['name'] = parseFile(preg_replace($preg, '', $_FILES['file']['name'])); if ($file['name'] == ''){ $error[] ="Ошибка ... с именем файла"; }
// на всякий случай проверяем ошибки $error = implode(' ', $error); if($error != ''){ // .. отправляем на обработку ошибку }
// место куда копируется файл $dir = ".. задаём абсолютный адрес для файла..";
// проверка на существование файла с таким же именем и замена на новое $file['name'] = strtolower(fCheckingFilename($dir, $file['name'], $file['ext']));
// делаем окончательно имя $filename = $file['name'] . '.' . $file['ext'];
// ну и окончатено копируем move_uploaded_file($filename_temp, $dir . $filename);
// всё таки лучше кириллицу и другую гадость переделать в нормальный вид function parseFile($file_name) { $in = array( 'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ы','ъ','э','ю','я', 'А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ь','Ы','Ъ','Э','Ю','Я', ' ', '`','~','!','@','#','$','%','^','&','*','(',')','=','+','{','}','[',']','"','№',';','%',':','?',"'",'/','|','\\' ); $out = array( 'a','b','v','g','d','e','yo','zh','z','i','y','k','l','m','n','o','p','r','s','t','u','f','h','ts','ch','sh','sch','','y','','e','yu','ya', 'a','b','v','g','d','e','yo','zh','z','i','y','k','l','m','n','o','p','r','s','t','u','f','h','ts','ch','sh','sch','','y','','e','yu','ya', '_',''); $result = str_replace($in, $out, $file_name); return $result; }
// простая функция для исключения одинаковых имён файлов function fCheckingFilename($dir, $name, $ext){ if(is_file($dir . $name.'.'.$ext)){ $name = $name.time(); } return $name; }
|
наверное слишком много лишнего, но мало ли что-то интересное найдётся ;)
Добавлено @ 21:25 я ещё делаю миниэскизы... Ну например чтобы в контенте показывать не весь размер а маленький и чтобы потом использовать например fancybox для просмотра оригинала 
| Код |
$hauteur_destination =100; // размер миниэскиза if ($_FILES['file']['type'] == 'image/png'){ $image = imagecreatefrompng($dir . $filename); } if ($_FILES['file']['type'] == 'image/jpeg'){ $image = imagecreatefromjpeg($dir . $filename); } if ($_FILES['file']['type'] == 'image/gif'){ $image = imagecreatefromgif($dir . $filename); } if ($_FILES['file']['type'] == 'image/png' OR $_FILES['file']['type'] == 'image/jpeg' OR $_FILES['file']['type'] == 'image/gif') { $largeur = imagesx($image); $hauteur = imagesy($image); if ($hauteur >= $hauteur_destination) { $pourcentage = $hauteur_destination / $hauteur; $largeur_destination = $largeur * $pourcentage; $destination = imagecreatetruecolor($largeur_destination, $hauteur_destination); imagecopyresampled($destination, $image, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur, $hauteur); imagepng($destination, $dir . 'mini_' . $filename); } else{ imagepng($image, $dir . 'mini_' . $filename); } if (isset($image)){ imagedestroy($image); } if (isset($destination)){ imagedestroy($destination); } }
|
Добавлено @ 21:28 я в коде разделяю именно отдельно имя и расширение, чтобы более гибко с этим работать... К примеру у меня есть функция которая проверяет тип и выводит соответствующую картинку  |