- Автор темы
- #1
PHP:
<?php
class upload {
private $extensions = array("jpg","jpeg","gif","png","rar","zip","7z","doc","pdf","rtf","xls","tmpl","ex4","mq4","htm","html","exe"); // список разрешенных для загрузки расширений
private $img_extensions = array("jpg","jpeg", "gif");
private $def_img_width = 468; // Px
private $def_img_height = 60; // Px
private $def_img_size = 100; // Kilobytes
private $allowed_img_exts = '';
private $allowed_exts = '';
private $to = ''; // если хотите тут указать папку для загрузки удалите строку 26
private $size = 5; // максимальный размер загружаемого файла в мегабайтах
public $errors;
function __construct() {
$this->def_img_size = $this->def_img_size * 1024; // в килобайтах
$this->size = $this->size * 1024 *1024; // теперь в мегабайтах
foreach ($this->extensions as $value) {
$this->allowed_exts .= $value . ', ';
}
foreach ($this->img_extensions as $value) {
$this->allowed_img_exts .= $value . ', ';
}
$this->allowed_exts = substr($this->allowed_exts, 0, strlen($this->allowed_exts) - 2);
$this->to = ABSPATH . 'uploads/';
if (isset($_SESSION['user_id'])) {
$this->img_to = ABSPATH . 'uploads/users/' . $_SESSION['user_id'];
}
}
public function send_img($fieldname = 'userfile',$to = null) {
if (isset($_FILES[$fieldname])) {
if (is_uploaded_file($_FILES[$fieldname]['tmp_name'])) {
$filename = $_FILES[$fieldname]['tmp_name'];
$realname = $_FILES[$fieldname]['name'];
$ext = substr($_FILES[$fieldname]['name'],
1 + strrpos($_FILES[$fieldname]['name'], "."));
if (filesize($_FILES[$fieldname]['tmp_name']) > $this->def_img_size) {
$this->errors[] = '<div class="errorwrap">Размер файла более ' . $this->def_img_size / 1024 . 'Kb.</div>';
} elseif (!in_array($ext, $this->img_extensions)) {
$this->errors[] = '<div class="errorwrap">Недопустимое расширение файла (<b>' . $ext . '</b>).<br />Расширение должно быть в списке: ' . $this->allowed_img_exts . '.<br />Этот список можно отредактировать на 4й строке файла ' . __FILE__ . '</div>';
} else {
if (empty($to)) {
$to = $this->img_to;
} else {
if (!is_dir($to)) {
mkdir(substr($to, 0, strlen($to) - 1), 0755) or die($this->errors[] = '<div class="errorwrap">Невозможно создать папку: ' . $to . '.</div>');
}
}
$prefix = '';
if (is_file($to . $realname)) {
rename($to . $realname, $to . time() . '_-_' . $realname);
//$prefix = time();
}
if (@move_uploaded_file($filename, $to . $prefix . $realname)) {
chmod($to . $prefix . $realname, 0644);
if (!getimagesize($to . $prefix . $realname)) {
$this->errors[] = '<div class="errorwrap">Вы пытаетесь загрузить не картинку!</div>';
} else {
$size = getimagesize($to . $prefix . $realname);
if ($size[0] > $this->def_img_width || $size[1] > $this->def_img_height) {
$this->errors[] = '<div class="errorwrap">Вы пытаетесь загрузить слишком большое изображение!
Максимальная ширина <b>' . $this->def_img_width . '</b>Px, а высота
<b>' . $this->def_img_height . '</b>Px.
Ваша картинка имеет ширину <b>' . $size[0] . '</b>Px и высоту <b>' . $size[1] . '</b>Px.
</div>';
unlink($to . $prefix . $realname);
}
}
} else {
$this->errors[] = '<div class="errorwrap">Невозможно переместить файл, проверьте права на доступ к папке ' . $to . '.</div>';
}
}
} else {
$this->errors[] = '<div class="errorwrap">Вы пытаетесь загрузить пустой файл</div>';
}
} else {
$this->errors[] = '<div class="errorwrap">Загрузка файла невозможна</div>';
}
}
public function send_file($fieldname = 'userfile', $to = null) {
if (isset($_FILES[$fieldname])) {
if (is_uploaded_file($_FILES[$fieldname]['tmp_name'])) {
$filename = $_FILES[$fieldname]['tmp_name'];
$realname = $_FILES[$fieldname]['name'];
$ext = substr($_FILES[$fieldname]['name'],
1 + strrpos($_FILES[$fieldname]['name'], "."));
if (filesize($_FILES[$fieldname]['tmp_name']) > $this->size) {
$this->errors[] = '<div class="errorwrap">Размер файла более ' . $this->size / pow(1024,2) . 'Mb.</div>';
} elseif (!in_array($ext, $this->extensions)) {
$this->errors[] = '<div class="errorwrap">Недопустимое расширение файла (<b>' . $ext . '</b>).<br />Расширение должно быть в списке: ' . $this->allowed_exts . '.<br />Этот список можно отредактировать на 4й строке файла ' . __FILE__ . '</div>';
} else {
if (empty($to)) {
$to = $this->to;
} else {
if (!is_dir($to)) {
mkdir(substr($to, 0, strlen($to) - 1), 0755) or die($this->errors[] = '<div class="errorwrap">Невозможно создать папку: ' . $to . '.</div>');
}
}
if (is_file($to . $realname)) {
rename($to . $realname, $to . time() . '_-_' . $realname);
//$prefix = time();
$prefix = '';
}
if (@move_uploaded_file($filename, $to . $prefix . $realname)) {
chmod($to . $prefix . $realname, 0644);
} else {
$this->errors[] = '<div class="errorwrap">Невозможно переместить файл, проверьте права на доступ к папке ' . $to . '.</div>';
}
}
} else {
$this->errors[] = '<div class="errorwrap">Вы пытаетесь загрузить пустой файл</div>';
}
} else {
$this->errors[] = '<div class="errorwrap">Загрузка файла невозможна</div>';
}
}
}
?>
Запуск скрипта:
PHP:
<?php
$upload = new upload();
$upload->send_file('myfile','/home/httpd/www/uploads/'); // "myfile" - name of form field with file
?>