| Взял готовую функцию загрузки, убрал move_upload, т.к. прочел, что временный файл не должен перемещаться, его необходимо удалять, а на основе его создавать новое изображение, так безопаснее. Может я что-то упустил, просьба проверить.
<?php
/**
* Function of uploaded of a file
* Функция загрузки файла (аплоадер)
* @param int $max_file_size максимальный размер файла в килобайтах
* @param array $valid_extensions массив допустимых расширений
* @param string $upload_dir директория загрузки
* @return array сообщение о ходе выполнения
*
* @author IT studio IRBIS-team (www.irbis-team.com)
* @copyright © 2009 IRBIS-team
*/
function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.')
{
$error = NULL;
$info = NULL;
$max_file_size *= 1024;
if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK)
{
# проверяем расширение файла
$file_extension = strtolower(pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION));
if (in_array($file_extension, $valid_extensions))
{
# проверяем размер файла
if ($_FILES['userfile']['size'] <= $max_file_size)
{
# проверяем, действительно ли загруженный файл является изображением
$imageinfo = getimagesize($_FILES["userfile"]["tmp_name"]);
list($width, $height, $type, $attr) = $imageinfo;
if ($imageinfo["mime"] == "image/gif" or $imageinfo["mime"] == "image/jpeg" or $imageinfo["mime"] == "image/png")
{
# проверяем ширину и высоту баннера
if ($width == 468 and $height == 60)
{
# Создаем пустое изображение 468x60
$image = imagecreatetruecolor($width, $height);
# Имя будущего баннера
$new_name = 'test';
# В зависимости от типа создаем новое изображение на основе переданного
switch ($type)
{
case 1:
$nimage = imagecreatefromgif($_FILES["userfile"]["tmp_name"]);
imagecopyresampled($image, $nimage, 0, 0, 0, 0, $width, $height, $width, $height);
$create_img = imagegif($image, $upload_dir.'/'.$new_name.'.gif', 100);
break;
case 2:
$nimage = imagecreatefromjpeg($_FILES["userfile"]["tmp_name"]);
imagecopyresampled($image, $nimage, 0, 0, 0, 0, $width, $height, $width, $height);
$create_img = imagejpeg($image, $upload_dir.'/'.$new_name.'.jpg', 100);
break;
case 3:
$nimage = imagecreatefrompng($_FILES["userfile"]["tmp_name"]);
imagecopyresampled($image, $nimage, 0, 0, 0, 0, $width, $height, $width, $height);
$create_img = imagepng($image, $upload_dir.'/'.$new_name.'.png', 100);
break;
}
if ($create_img)
$info = 'Баннер успешно загружен';
else
$error = 'Не удалось загрузить баннер';
}
else
$error = 'Баннер должен быть размером 468x60';
}
else
$error = 'Загруженный файл не является изображением';
}
else
$error = 'Размер баннера больше допустимого';
}
else
$error = 'У файла недопустимое расширение';
}
else
{
# массив ошибок
$error_values = array(
UPLOAD_ERR_INI_SIZE => 'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
UPLOAD_ERR_FORM_SIZE => 'Размер файла превышает указанное значение в MAX_FILE_SIZE',
UPLOAD_ERR_PARTIAL => 'Файл был загружен только частично',
UPLOAD_ERR_NO_FILE => 'Не был выбран файл для загрузки',
UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',
UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск'
);
$error_code = $_FILES['userfile']['error'];
if (!empty($error_values[$error_code]))
$error = $error_values[$error_code];
else
$error = 'Не известная ошибка, сообщите о проблеме администраторам';
}
return array('info' => $info, 'error' => $error);
}
##################################/
$extensions = array('jpg', 'jpeg', 'png', 'gif');
$upload_dir = 'uploads';
# Запускаем функцию
if(!empty($_POST['upload_submit']))
{
$message = uploadHandle(100, $extensions, $upload_dir);
# Выводим сообщение
echo $message['error'] ? $message['error'] : $message['info'];
}
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="userfile" />
<input type="submit" value="Закачать" name="upload_submit" />
</form>
|
| |