Добавлена загрузка rar, zip
1. Правка фронта 2. Правка бекенда
This commit is contained in:
@@ -128,7 +128,7 @@ class Task extends BaseEntity {
|
||||
self::check_task($id);
|
||||
|
||||
// Удаляем папку с файлами если есть
|
||||
$upload_dir = __DIR__ . '/../../../public/img/task/' . $id;
|
||||
$upload_dir = __DIR__ . '/../../../public/task/' . $id;
|
||||
if (is_dir($upload_dir)) {
|
||||
$files = glob($upload_dir . '/*');
|
||||
foreach ($files as $file) {
|
||||
|
||||
@@ -3,24 +3,24 @@
|
||||
class TaskImage {
|
||||
|
||||
protected static $db_name = 'cards_task';
|
||||
protected static $upload_path = '/public/img/task/';
|
||||
protected static $upload_path = '/public/task/';
|
||||
|
||||
// Валидация всех данных для загрузки
|
||||
protected static function validate($task_id, $file_base64, $file_name) {
|
||||
// Проверка и получение задачи
|
||||
$task = Task::check_task($task_id);
|
||||
|
||||
// Декодируем base64
|
||||
$file_data = base64_decode(preg_replace('/^data:image\/\w+;base64,/', '', $file_base64));
|
||||
// Декодируем base64 (убираем любой data: префикс)
|
||||
$file_data = base64_decode(preg_replace('/^data:[^;]+;base64,/', '', $file_base64));
|
||||
if (!$file_data) {
|
||||
return ['success' => false, 'errors' => ['file' => 'Ошибка декодирования файла']];
|
||||
}
|
||||
|
||||
// Проверка расширения
|
||||
$allowed_ext = ['png', 'jpg', 'jpeg'];
|
||||
$allowed_ext = ['png', 'jpg', 'jpeg', 'zip', 'rar'];
|
||||
$ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
|
||||
if (!in_array($ext, $allowed_ext)) {
|
||||
return ['success' => false, 'errors' => ['file' => 'Разрешены только PNG, JPG, JPEG']];
|
||||
return ['success' => false, 'errors' => ['file' => 'Разрешены только PNG, JPG, JPEG, ZIP, RAR']];
|
||||
}
|
||||
|
||||
// Проверка размера (10 МБ)
|
||||
@@ -29,18 +29,11 @@ class TaskImage {
|
||||
return ['success' => false, 'errors' => ['file' => 'Файл слишком большой. Максимум 10 МБ']];
|
||||
}
|
||||
|
||||
// Проверка MIME типа
|
||||
$finfo = new finfo(FILEINFO_MIME_TYPE);
|
||||
$mime = $finfo->buffer($file_data);
|
||||
$allowed_mime = ['image/png', 'image/jpeg'];
|
||||
if (!in_array($mime, $allowed_mime)) {
|
||||
return ['success' => false, 'errors' => ['file' => 'Недопустимый тип файла']];
|
||||
}
|
||||
|
||||
// Всё ок — возвращаем данные
|
||||
return [
|
||||
'task' => $task,
|
||||
'file_data' => $file_data
|
||||
'file_data' => $file_data,
|
||||
'is_archive' => in_array($ext, ['zip', 'rar'])
|
||||
];
|
||||
}
|
||||
|
||||
@@ -69,7 +62,7 @@ class TaskImage {
|
||||
$file_data = $validation['file_data'];
|
||||
|
||||
// Путь к папке
|
||||
$upload_dir = __DIR__ . '/../../../public/img/task/' . $task_id;
|
||||
$upload_dir = __DIR__ . '/../../../public/task/' . $task_id;
|
||||
if (!is_dir($upload_dir)) {
|
||||
mkdir($upload_dir, 0755, true);
|
||||
}
|
||||
@@ -123,7 +116,7 @@ class TaskImage {
|
||||
|
||||
// Получаем текущие файлы
|
||||
$current_files = json_decode($task['file_img'], true) ?? [];
|
||||
$upload_dir = __DIR__ . '/../../../public/img/task/' . $task_id;
|
||||
$upload_dir = __DIR__ . '/../../../public/task/' . $task_id;
|
||||
$deleted = [];
|
||||
|
||||
// Удаляем каждый файл
|
||||
|
||||
Reference in New Issue
Block a user