- Главная»
- Уроки»
- HTML и DHTML»
- ExtJS: Простой просмотрщик файлов
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))); ?>
Я думаю, что этот урок может вам пригодиться, тем более полигон для работ довольно-таки крупный: к примеру, вы можете расширить функциональность скрипта и добавить возможность создания, редактирования, удаления файлов, и т.д.
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.superdit.com/2011/06/01/extjs-simple-file-browser/
Перевел: Станислав Протасевич
Урок создан: 25 Июня 2011
Просмотров: 32262
Правила перепечатки
5 последних уроков рубрики "HTML и DHTML"
-
Лайфхак: наиполезнейшая функция var_export()
При написании или отладки PHP скриптов мы частенько пользуемся функциями var_dump() и print_r() для вывода предварительных данных массив и объектов. В этом посте я бы хотел рассказать вам о функции var_export(), которая может преобразовать массив в формат, пригодный для PHP кода.
-
17 бесплатных шаблонов админок
Парочка бесплатных шаблонов панелей администрирования.
-
30 сайтов для скачки бесплатных шаблонов почтовых писем
Создание шаблона для письма не такое уж простое дело. Предлагаем вам подборку из 30 сайтов, где можно бесплатно скачать подобные шаблоны на любой вкус.
-
Как осуществить задержку при нажатии клавиши с помощью jQuery?
К примеру у вас есть поле поиска, которое обрабатывается при каждом нажатии клавиши клавиатуры. Если кто-то захочет написать слово Windows, AJAX запрос будет отправлен по следующим фрагментам: W, Wi, Win, Wind, Windo, Window, Windows. Проблема?.
-
15 новых сайтов для скачивания бесплатных фото
Подборка из 15 новых сайтов, где можно скачать бесплатные фотографии для заполнения своих сайтов.