$portial], 'layout_admin.php'));
} else {
header("Location:http://localhost:8000/login");
}
}
public function actionAddfile()
{
try {
$link = Db::connection(CONFIG_DB);
} catch (\Doctrine\DBAL\Exception $e) {
die("Ошибка подключения к базе данных: " . $e->getMessage());
}
$uploaddir = 'C:\\Lerning\\lerning-php\\itmo-php-course\\engine\\uploads\\';
$fileName = basename($_FILES['userfile']['name']);
$uploadfile = $uploaddir . $fileName;
$fileMimeType = mime_content_type($_FILES['userfile']['tmp_name']);
$fileExtension = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
$allowedMimeTypes = ['audio/mpeg'];
$allowedExtensions = ['mp3'];
$maxFileSize = 11 * 1024 * 1024;
if (
in_array($fileMimeType, $allowedMimeTypes) &&
in_array($fileExtension, $allowedExtensions) &&
$_FILES['userfile']['size'] <= $maxFileSize
) {
// Проверка наличия файла в базе данных
try {
$sql = "SELECT * FROM files WHERE file_name = :file_name";
$stmt = $link->prepare($sql);
$stmt->bindValue('file_name', $fileName);
$result = $stmt->executeQuery();
$existingFile = $result->fetchAssociative();
if ($existingFile) {
$message = "Файл уже загружен. Ссылка для скачивания: {$existingFile['download_link']}";
$status = 'info';
} else {
// Проверка наличия файла в директории
if (file_exists($uploadfile)) {
$message = "Файл с таким именем уже существует на сервере.";
$status = 'info';
} else {
// Перемещение загруженного файла в директорию
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
// Генерация ссылки для скачивания
$downloadLink = './uploads/' . $fileName;
// Сохранение ссылки в базу данных
try {
$link->insert('files', [
'file_name' => $fileName,
'download_link' => $downloadLink,
]);
$message = "Файл успешно загружен. Ссылка для скачивания: $downloadLink";
$status = 'success';
} catch (\Doctrine\DBAL\Exception $e) {
$message = "Ошибка при сохранении в базу данных: " . $e->getMessage();
$status = 'error';
}
} else {
$message = "Ошибка при загрузке файла.";
$status = 'error';
}
}
}
} catch (\Doctrine\DBAL\Exception $e) {
echo "Ошибка при проверке файла в базе данных: " . $e->getMessage();
return;
}
} else {
$message = "Ошибка: разрешены только MP3-файлы размером до 10 MB.";
$status = 'error';
}
// $rendMessage = (View::render([], 'message_tpl.php'));
// echo (View::render(['message' => $rendMessage], 'layout_admin.php'));
}
}