diff --git a/engine/app/controller/UploadController.php b/engine/app/controller/UploadController.php index 4cb8a3a..bd7faa1 100644 --- a/engine/app/controller/UploadController.php +++ b/engine/app/controller/UploadController.php @@ -1,35 +1,96 @@ $portial], 'layout_admin.php')); } else { header("Location:http://localhost:8000/login"); - }; + } } public function actionAddfile() { - $uploaddir = 'C:\\Lerning\\itmo-php-course\\engine\\uploads\\'; - $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); - - echo '
';
-        if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
-            echo "Файл не содержит ошибок и успешно загрузился на сервер.\n";
-        } else {
-            echo "Возможная атака на сервер через загрузку файла!\n";
+        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'));
     }
-}
+}
\ No newline at end of file
diff --git a/engine/app/model/MusicModel.php b/engine/app/model/MusicModel.php
index 7c0debe..60e2fec 100644
--- a/engine/app/model/MusicModel.php
+++ b/engine/app/model/MusicModel.php
@@ -2,18 +2,18 @@
 
 namespace App\Model;
 
-use Shalex\Engine\DataBase;
+// use Shalex\Engine\DataBase;
 use Shalex\Engine\Db;
 
 class MusicModel
 {
     static function getData()
     {
-        $link = Db::connection(CONFIG_DB);
-        $query = "SELECT * FROM track WHERE device_id = 3";
-        $result = $link->executeQuery($query);
-        $composer = $result->fetchAssociative();
-        var_dump($composer['composer_name']);
+        // $link = Db::connection(CONFIG_DB);
+        // $query = "SELECT * FROM track WHERE device_id = 4";
+        // $result = $link->executeQuery($query);
+        // $composer = $result->fetchAssociative();
+        // var_dump($composer['composer_name']);
         $box = [];
         if ($handle = opendir('./uploads')) {
             while (false !== ($entry = readdir($handle))) {
diff --git a/engine/app/template/index_tpl.php b/engine/app/template/index_tpl.php
index 34f0e8c..d28b564 100644
--- a/engine/app/template/index_tpl.php
+++ b/engine/app/template/index_tpl.php
@@ -12,22 +12,28 @@
 
 
 
-