ExtJS: Простой просмотрщик файлов
ExtJS содержит много крупных компонентов, которые могут помочь построить мощное веб-приложение, похожее на настольное приложение. В этом уроке, я хочу показать, как создать очень простой просмотрщик файлов на ExtJS и PHP.
С самого начала, я бы хотел сказать о некоторых ограничениях. Первый раз я запустил этот скрипт на XAMPP на моём локальном хосте. Скрипту требуется некоторое количество времени, чтобы просканировать директории и воссоздать соответствующую структуру. В навигаторе появятся папки и файлы, которые присутствуют у вас на локальном хосте.
ExtJS
Контейнер представляет собой окно, разделённое на две части - treePanel и gridPanel, gridPanel загружает информацию динамически, trigerred - только при клике на какую-то папку из предыдущего окна.
Ext.onReady(function() { store_dir = Ext.create('Ext.data.TreeStore', { proxy: { type: 'ajax', url: 'get_dir.php' } }); tree_dir = Ext.create('Ext.tree.Panel', { title: 'Localhost Directory', rootVisible: false, store: store_dir, split: true, region: 'west', collapsible: true, floatable: false, width: 200, useArrows: true, listeners: { itemclick: { fn: function(view, record, item, index, event) { store_file.load({ url: 'get_file.php?dir=' + record.data.id }); nodeId = record.data.id; htmlId = item.id; } } } }); Ext.define('File', { extend: 'Ext.data.Model', fields: ['filename', 'filesize', 'filedate'] }); store_file = Ext.create('Ext.data.Store', { model: 'File', proxy: { type: 'ajax', url: 'get_file.php', reader: { type: 'json', root: 'files' } } }); grid_file = Ext.create('Ext.grid.Panel', { title: 'File List', region: 'center', store: store_file, columns: [ { header: 'Name', width: 170, dataIndex: 'filename' }, { header: 'Size', width: 100, dataIndex: 'filesize' }, { header: 'Last Modified', width: 200, dataIndex: 'filedate' } ], viewConfig: { stripeRows: true } }); win = Ext.create('widget.window', { title: 'ExtJS Simple File Browser', width: 700, height: 400, layout: 'border', bodyStyle: 'padding: 5px;', items: [tree_dir, grid_file] }); win.show(); });
PHP (get_dir.php)
Этот файл служит для того, чтобы просканировать папку htdocs (если у вас XAMPP) , используя $ _SERVER переменную ['DOCUMENT_ROOT']. Если у вас в htdocs много папок, то процесс может затянуться. В этом php файле я использовал рекурсивную функцию, чтобы получить все каталоги и подкаталоги. Результат оформляю как json и отправляю основному файлу.
<?php class MyDirectory { public $json = '['; public function get_children($dir, $child) { $dh = opendir($dir); while (($file = readdir($dh)) !== false) { if ($file != '.' AND $file != '..' ) { if (filetype($dir . $file) == 'dir') { // must be checked if this folder have other subfolder if ($this->count_sub_dir($dir . $file . '/') == 0) { $this->json .= '{text:"'.$file.'", leaf: true, id: "'.$dir . $file.'"},'; } else { $this->json .= '{text:"'.$file.'", id: "'.$dir . $file.'", children: ['; $this->get_children($dir . $file . '/', true); } } } } if ($child) { $this->json .= ']},'; } closedir($dh); } public function count_sub_dir($dir) { $dh = opendir($dir); $countdir = 0; while (($file = readdir($dh)) !== false) { if ($file != '.' AND $file != '..' ) { if (filetype($dir . $file) == 'dir') { $countdir++; } } } closedir($dh); return $countdir; } } $host_dir = $_SERVER['DOCUMENT_ROOT']."/"; $dir = new MyDirectory(); $dir->get_children($host_dir, false); $dir->json .= ']'; $dir->json = str_replace(",]", "]", $dir->json); echo($dir->json); ?>
PHP (get_file.php)
В этом файле происходит сбор данных о файлах.
<?php $dir = $_GET['dir'] . "/"; $dh = opendir($dir); $files = array(); while (($file = readdir($dh)) !== false) { if ($file != '.' AND $file != '..' ) { if (filetype($dir . $file) == 'file') { $files[] = array( 'filename' => $file, 'filesize' => filesize($dir . $file). ' bytes', 'filedate' => date("F d Y H:i:s", filemtime($dir . $file)) ); } } } closedir($dh); echo(json_encode(array('files' => $files))); ?>
Я думаю, что этот урок может вам пригодиться, тем более полигон для работ довольно-таки крупный: к примеру, вы можете расширить функциональность скрипта и добавить возможность создания, редактирования, удаления файлов, и т.д.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/GnJUyppIwT0/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-04-22 » Комментирование кода и генерация документации в PHP
- 2024-04-22 » SEO в России и на Западе: в чем основные отличия
- 2024-04-22 » SEO для международного масштабирования
- 2024-04-22 » Как использовать XML-карты для продвижения сайта
- 2024-04-22 » Цифровой маркетинг: инструменты для продвижения и рекламы в 2024 году
- 2024-04-22 » Что такое CSS-модули и зачем они нам?
- 2024-04-17 » 23 сервиса для эффективного экспресс-аудита любого сайта
- 2024-04-08 » Яндекс переходит на новую версию Wordstat
- 2024-04-08 » Яндекс интегрировал в свой облачный сервис эмпатичную нейросеть
- 2024-04-08 » Новая версия нейросети Claude превзошла по мощности аналоги Google и OpenAI
- 2024-04-08 » Как пользоваться GPT 4 и Claude бесплатно и без VPN
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
Все мы сидим в сточной канаве, но некоторые при этом смотрят на звезды Уайльд Оскар - (1854-1900) - английский писатель |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.