Pull to refresh

Файловый менеджер на PHP, с правами, контролем версий и AJAX-ом

Reading time 2 min
Views 25K
Особенности файлового менеджера:
— Можно задавать права доступа на файлы и директории. Права двух типов: есть доступ или нет доступа. Файлы хранятся в недоступной для скачивания по прямой ссылке папке. Скачивание файла происходит с предварительной проверкой пользователя и прав доступа на файл. Любой пользователь файлового менеджера может обладать правами администратора, что указывается при добавлении нового или редактировании существующего пользователя. Администратор может видеть все, в том числе «удалённые» файлы.
— Контроль версий каждого файла. После загрузки файла он сохраняется с именем, которое не позволяет перезаписать существующие файлы, а его «оригинальное» имя сохраняется в БД. Данный подход разрешает хранить разные состояния файлов.
— Автоматическое создание превью загружаемых изображений.
— Файл в менеджере можно сделать доступным для скачивания
— GPL, код доступен на github





FM создан без использования фреймворков. Это довольно обычное MVC приложение, где основные действия контроллера могут быть вызваны AJAX запросом, например:
— при инициализации приложения вызывается AJAX контроллер /ajax/fm/?action=files, функция files() в зависимости от текущей директории, которая хранится в сессии, получает список файлов и директорий.
— клик на файле делает активным DIV с id=«fDialog», а в зависимости от выбранной вкладки диалогового окна получает необходимые данные для текущего файла.

Пройдя по ссылке можно ознакомиться с основами функционирования приложения.

Для загрузки файлов используется Ajax Upload. Он поддерживает мультизагрузку и позволяет загружать файлы, переместив их drag&drop-ом на кнопку «Загрузка файлов». Главный недостаток: Ajax Upload не работает на планшетных (Android) устройствах.

Установка:
1) Скачать код файлового менеджера github
2) Создать базу данных и пользователя для доступа к базе. Дамп хранится в папке /sql/fm.sql
3) Распаковать исходный код системы в любую директорию веб-сервера
4) Выставить права на запись для необходимых директорий:
/cache/ /upload/ /upload/_thumb/

5) Отредактировать файл /system/config.ini:
; включить кеширование, ускоряет выполнение php скриптов
twig_cache = false

; пути, используемые системой, менять не нужно
[path]
application = "/system/"
library = "/system/library/"
controller = "/system/Controller/"
templates = "/system/View/templates/"
layouts = "/system/View/layouts/"
cache = "/cache"
upload = «upload/»

[fm]
; максимальный размер загружаемого файла в байтах
sizeLimit = 10485760
; цвет фона для создаваемых превьюшек и качество сжатия JPEG
rgb = 0xFFFFFF
quality = 100

; параметры для доступа к БД
; т.к. используется PDO можно использовать другие базы
[db]
adapter = «mysql»
host = «localhost»
username = ""
password = ""
dbname = ""
6) Открыть в браузере файловый менеджер. Для входа filemanager/filemanager
Логин/Пароль пользователя с правами администратора

1) Ajax Upload
valums.com/ajax-upload/
2) Иконки типов файлов: OSX 3.3

P.S. В demo файлового менеджера нельзя сделать какие-то изменения. ReadOnly, это специально.
Интерфейс файлового менеджера довольно прост, если проект заинтересует — над интерфейсом обещаю потрудиться.
Tags:
Hubs:
+44
Comments 47
Comments Comments 47

Articles