Просмотр полной версии : Как вызвать окно с отображением дерева каталогов?
BonKatty
05.02.2010, 19:29
Может кто нибудь использовал такую функцию во Флеш которая давала бы возможность 1)вызывать окно с деревом каталогов с определённого места и 2)подгружать выбранный файл?
Как для (1), так и (2):
Без дополнительных надстроек типа Zinc на локальном компе это невозможно, потому что флеш не умеет работать с файловой системой на таком уровне.
Но все это возможно для флешки, находящейся а сервере, при этом (1) возможно с некоторым использованием PHP.
В AS3 можно данные файла получить через FileReference.
BonKatty
05.02.2010, 21:41
mooncar
Чудненько. А можно поподробней как осуществляли?
Спасибо.
Нужды не было, не осуществлял, но подсказать могу.
Если надо получить листинг серверного каталога и разобрать ответ скрипта внутри флеша, закиньте такой скрипт в искомый каталог на сервере:
Файл list.php
<?php
$dir = ".";
$n = 0;
$dp = opendir($dir);
while ($file = readdir($dp))
if ($file != '.' && $file != '..') echo 'file'.$n++.'='.$file.'&';
closedir($dp);
?>
Запрос к скрипту делаете из экземпляра класса LoadVars.
Флеш получит после запроса строку вида
file0=1.txt&file1=2.txt&file3=somefile.ext& ....... и т.д.
Останется элементарно ее распарсить внутри метода onLoad.
Таким образом, во флеше код будет:
var lv:LoadVars = new LoadVars();
var FILES:Array = new Array();
lv.onLoad = function (success:Boolean) {
if (success) {
for (i in this) {
if (i.substr(0, 4) == 'file') {
FILES[i] = this[i];
}
}
startListingShow();
}
};
lv.load ('http://www.xxx.ru/dir/list.php');
На выходе имеем массив FILES, содержащий названия файлов каталога, а индексы массива будут строки вида file0, file1....
Если внутри цикла записать
FILES.push(this[i]); вместо FILES[i] = this[i];, то получим массив с номерными индексами, что позволит использовать его для получения имени файла так:
trace (FILES[0]); //выведет 1.txt
trace (FILES[2]); //выведет somefile.ext
Хотя сам массив будет доступен везде, начинать его использовать (startListingShow) можно только изнутри onLoad, чтобы была гарантия загрузки данных.
Какая будет startListingShow , т. е. как отобразить содержимое массива - тут от ваших целей зависит, от опыта и фантазии..
Хотите - используйте компонент Tree, хотите - аттачтте столбиком красивышные иконки с подписями-названиями файлов.
Либо просто список в динамическом текстовом поле выводите, это ваше усмотрение.
Если там еще есть вложенные каталоги - нужно усложнять код php-скрипта, при этом задействовать PHP-шные функции типа is_dir. Обратитесь к справочнику или учебнику php, в зависимости от вашей подготовки...
BonKatty
15.02.2010, 13:44
Спасибо большое. Разбираюсь теперь :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.