Этот проект реализован с помощью: PHP 8.1, фреймворк Laravel, СУБД PostgreSQL, CRON.
Это облачное хранилище файлов. Для начала необходимо зарегистрироваться и пройти аутентификацию, чтобы получить JWT токен. Пользователь имеет ограниченное хранилище в 100 Мб. При загрузке файлов используйте полученный токен. Файл можно загрузить, указать срок хранения, удалить. Создание новых директорий и загрузки в них файлов также поддерживается. Генерация уникальной публичной ссылки на файл/p>
-
Регистрация пользователя, аутентификация и выдача JWT токена
-
Возможность редактировать данные пользователя
-
Пользователь имеет объем диска в 100 Мб
-
Загружать файлы в облачное хранилище, редактировать наименование загруженного файла, а также удалять файл
-
Файл не должен превышать размер в 20 Мб, а также же не допускаются к загрузке файлы с форматом '.php'
-
Возможность просматривать список файлов, скачивать файлы
-
Получать размер всех файлов внутри определенной директории (папки)
-
Получить размер всех файлов на диске пользователя
-
Генерация уникальной публичной ссылки на файл
-
Реализована возможность при загрузке указывать срок хранения файла, после которого он сам удаляется
-
Создание и удаление папок, файлы можно создавать внутри директории
-
POST /api/signup - Регистрация пользователя
-
POST /api/login - Аутентификация пользователя, выдается JWT токен
-
POST /api/logout - Выйти из системы
-
PUT /api/users - Редактирование пользователя
-
DELETE /api/users- Удаление пользователя
-
POST /api/files - Загрузка файла в облачное хранилище
-
PUT /api/files/{id} - Переименовать файл
-
DELETE /api/files/{id} - Удалить файл
-
GET /api/files/{id} - Скачать файл
-
POST /api/folders - Создание папки
-
GET /api/folders - Получить список папок
-
DELETE /api/folders/{id} - Удалить папку
-
GET /api/folders - Получить размер файлов внутри директории
-
GET /api/users/current-files-size - Получить размер всех файлов на диске пользователя
-
GET /api/files/{id}/public-link - Сгенерировать уникальную публичную ссылку
- Зарегистрйтесь:
- POST /api/signup
- Войдите в аккаунт, выдается JWT токен:
- POST /api/login
- Загрузите файл в облачное хранилище, даллее во всех запросах Autorization(Baerer Token) вставьте JWT токен:
- POST /api/files
- Получить файлы пользователя:
- GET /api/files
- Скачать файл пользователя:
- GET /api/files/{id}
- Создание папки:
- POST /api/folders
- Загрузка файла в указанную директорию по id:
- POST /api/files
- Получить размер файлов внутри директории:
- GET /api/folders/{id}
- Получить размер всех файлов на диске пользователя:
- GET /api/users/current-files-size
- Сгенерировать уникальную публичную ссылку на файл:
- GET /api/files/{id}/public-link
- Создайте контейнеры:
sail build
- Запустите их:
sail up -d
- Проверьте созданные docker-контейнеры:
sail ps
- Зайдите в контейнер php-fpm:
sail bash
- Создайте таблицы:
sail artisan migrate
- Настройка файла Cron, необходимо добавить следующую команду
* * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1
- Возможно понадобиться перезапустить крон:
service cron restart
-
Далее можно пользоваться роутами.
-
Готово 😊