Skip to content

Instantly share code, notes, and snippets.

@xlab
Created August 23, 2013 15:18
Show Gist options
  • Save xlab/6320506 to your computer and use it in GitHub Desktop.
Save xlab/6320506 to your computer and use it in GitHub Desktop.
<?php
$link = mysql_connect('localhost','root','');
mysql_select_db('bd_rbt');
mysql_set_charset('utf8');
class Uploader
{
public $upload_dir = "Z:\\home\\myrbt.ru\\www\\files\\";
private $allow_exp = Array("image/jpeg", "image/png");
private $max_size = 5242880; // 5 Мб
public function Upload($file)
{
global $link;
// Проверяем тип файла
if (array_search($file['type'], $this->allow_exp) === false)
return 'Неподходящий тип файла.';
// Проверяем размер
if ($file['size'] > $this->max_size)
return 'Файл слишком большой.';
// Генерируем id и проверяем по базе
$id = 0;
while(true) {
$id = md5(uniqid());
$query = mysql_query("SELECT `id` FROM `files` WHERE (`id`='".$id."')");
if (!mysql_fetch_array($query)) // Если найден, то генерируем заново
break;
}
// Новое имя файла
$file['name'] = $id . substr($file['name'], (int)strrpos($file['name'], '.') - strlen($file['name']));
$uploadfile = $this->upload_dir . $file['name'];
//Перемещаем файл из временного хранилища
if (move_uploaded_file($file['tmp_name'], $uploadfile)) {
mysql_query("INSERT INTO `files`(`id`,`name`,`size`) VALUES ('".$id."','".$file['name']."','".$file['size']."')");
return "Файл загружен! ID: " . $id;
} else {
return "Что-то пошло не так. Попробуйте еще раз.";
}
}
public function Info($id)
{
global $link;
//return mysql_query("SELECT * FROM `files` WHERE `id`='".$id."'");
$query = mysql_query("SELECT * FROM `files` WHERE `id`='".$id."'");
$row = mysql_fetch_assoc($query);
if ($row)
$row['name'] = $this->upload_dir . $row['name'];
else
return "Файл не найден.";
return $row;
}
}
if (isset($_POST['upload']))
{
$uploader = new Uploader();
echo $uploader->Upload($_FILES['file']);
}
elseif (isset($_POST['id']))
{
$uploader = new Uploader();
$row = $uploader->Info($_POST['text']);
if (is_array($row))
{
foreach ($row as $key => $value)
echo($key . ": " . $value. "<br>");
}
else
{
echo $row;
}
}
?>
<!DOCTYPE html>
<html lang="ru">
<body>
<form method='post' enctype='multipart/form-data'>
<input name='file' type='file' multiple='false' />
<input type='submit' name='upload' value='Загрузить' />
</form>
<form method='post' enctype='multipart/form-data'>
<input name='text' type='text' />
<input type='submit' name='id' value='Найти' />
</form>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment