| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > прочесть папку на компьютере пользователя |
| Автор: Alx 23.10.2006, 17:07 |
| сабж. возможно такое? как-нибудь прочитать и вывести юзеру древо каталогов на его компе. любые извраты и нестандартные методы приветствуются |
| Автор: JSman 27.10.2006, 20:05 |
| привет! существует огромное количество способов. самый лучший простой извращенский способ: <OBJECT CLASSID="clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B" ID="oShell"></OBJECT> - в странице или oShell = new WScript.CreateObject("WScript.Shell"); - в скрипте есть метод oShell.Run (path, viewMode, waitOnReturn) запомни его! создай Bat файл с вызовом команды (TREE или DIR) c сохранением вывода в отдельный файл (>c:\index.txt). вместо path напиши путь к cmd с открытием этого BAT файла) oShell.Run ( 'cmd /c ' + BAT_File_Path + ' ' +параметры BAT файла, 0, true); затем подгрузи в фрейм этот сохраненный текстовый файл или если у тебя вызов из сценария, то var WB = new ActiveXObject("InternetExplorer.Application"); WB.Visible = true; WB.Navigate (путь к файлу); и радуйся)) |
| Автор: Alx 27.10.2006, 20:19 | ||
| ничего не понял. всётки я ламер )) 1) bat-файл я создавать не умею( можешь помочь? 2) куда я должен сохранять файл? к себе на сервер или к юзеру на комп? я ж из интернета хочу древо выводить, а не с локалки, ты понял, да? 3) что это даёт?
4) разве можно так просто bat-файлы запускать? а как же безопасность? я ж туда могу что-нибудь плохое запихнуть..) или нет? пасиб! |
| Автор: JSman 27.10.2006, 20:32 |
| короче, я понял)) забей на то, что я написал в зависимости от того какой сервер и какая поддержка сценариев стоит на нем. Если Windows, то есть поддержка JScript. А скорее всего у тебя стоит поддержка PHP. ну это не входит в компетенцию форума, хотя могу написать. Сначала скажи, что стоит на серваке |
| Автор: Alx 27.10.2006, 20:33 | ||
это какой язык? JavaScript? выдаёт ошибку :
Добавлено @ 20:36 JSman, спасибо, но давай лучше вместе) я сам тоже хочу разобраться. у меня всегда Unix. php есть. |
| Автор: JSman 27.10.2006, 20:39 |
| создай файл 123.js var oShell = new ActiveXObject("WScript.Shell"); oShell.Run ('c:\\', 1); и два раза кликни по файлу)) |
| Автор: Alx 27.10.2006, 20:52 | ||||||
| таакс, есть) tree.html
run_bat.js
scan_system.bat
как теперь мне вывести в C:\test\list.txt результат выполнения DIR или TREE и сделать так, чтобы это работало из Инета? |
| Автор: JSman 27.10.2006, 20:57 |
| у тебя сервак Windows? |
| Автор: Alx 27.10.2006, 21:01 |
| Автор: JSman 27.10.2006, 21:02 |
| все замечательно. тогда напишем (завтра). |
| Автор: Alx 27.10.2006, 21:04 |
| желательно чтоб всё это было кроссбраузерно и кроссплатформенно давай лучше мы вместе) я сам тоже хочу понять |
| Автор: JSman 30.10.2006, 01:36 |
| читает текущую папку. не проверял <?php if ($handle = opendir('./')) { echo "<p>Файлы:<br>"; while (false !== ($file = readdir($handle))) { echo "$file<br>"; } closedir($handle); } ?> как будет время добавлю еще инфы. смысл в чем. грубо говоря, к строке запроса прибавляешь параметр - путь просматриваемой папки. эту переменную подставляешь вместо opendir('./') |
| Автор: Alx 30.10.2006, 10:42 |
| JSman, кхм.. это немножко другое.. php читает файы на сервере.. как же он может читать файлы на клиенте?? это ж серверный язык.. тут действительно надо делать средствами JavaScript, JScript, VBScript, ActionScript (Flash)... что-нибудь из этого... итак, ещё раз опишу задачу: пользователь заходит на сайт http://qqq.ru/user/explorer/index.html там скрипт (JavaScript, JScript, VBScript, ActionScript (Flash)) лезет к нему на C:/ (к примеру) и выводит ему список файлов и папок на C: далее юзер выбирает папку, допустим, WINDOWS, снова ждёт, пока скрипт сканит и эту папку и выводит ему список виндовских файлов и папок. вот, что конкретно нужно. для этого идеально подходит пример с запуском bat-файла, но он работает только если скрипт находится на компьютере юзера! если скрипт находится в Инете ( по адресу http://qqq.ru/user/explorer/index.html ), IE (проверял в нём) запрещает запуск bat-файла из скрипта!!! в связи с этим вопрос : как ещё можно вывести древо каталогов на юзеровском компе? (кстати, желательно и с объёмом в байтах) Добавлено @ 10:45 мне, ессно не нужно, чтобы всё работало и с кликами юзеров. просто функция, в параметрах к которой передаётся папка, после чего она возвращает её содержимое. остальное я всё сделаю сам. |
| Автор: dstorm81 30.10.2006, 12:22 | ||
| Alx c узнать чтов папках? имхо ни как нельзя кроссбраузерно (впаривание вирей не в счет ? только под ослом такое возможно, да и то если разрешить activX Добавлено @ 12:26
вот так везде открывает но если только файл сохранен ЛОКАЛЬНО!!!!! |
| Автор: JSman 30.10.2006, 15:55 |
| если кросс-браузерно, то использование плагинов к браузеру, если браузер базируется на нетскейпе или опера. с ие проще, как сказали выше использование ActiveX. больше никак. вообще нужно подумать о целесообразности использования данного метода. если у тебя серьезный ресурс и пользователи могут доверять, то это отдельный разговор. и плагины здесь актуальны. но вообще просьба о скачивании плагина является плохим тоном. и сайты, например agava, если и используют специфические технологии, то выбирают ие (например при требовании использования протокола https). поэтому, если ты планируешь создать что-то вроде веб-панели, то нужно остановиться на ие. а именно разумнее будет использовать WSC (windows script component). компонент будет мало весить и его можно подписать, то есть при его установке не будет больше появляться окно об активном содержимом. |
| Автор: Alx 30.10.2006, 17:07 |
| нет, плагины мне не подходят... мне нужно чтобы всё работало сразу.. но всё равно, всем спасибо, буду думать.. Добавлено @ 17:08 нет, плагины мне не подходят.. нужно, чтобы всё работало сразу.. но всё равно, всем спасибо, буду думать.. Добавлено @ 17:08 нет, плагины мне не подходят.. нужно, чтобы всё работало сразу.. но всё равно, всем спасибо, буду думать.. Добавлено @ 17:10 нет, плагины мне не подходят.. нужно, чтобы всё работало сразу.. но всё равно, всем спасибо, буду думать.. |
| Автор: pythonwin 31.10.2006, 09:50 | ||
попробуй вот это:
|
| Автор: Alx 31.10.2006, 12:51 |
| да не) не будет юзер ниче у ся запускать) задача именно в том' чтобы все работало сразу' без каких-либо действий юзера.. Ну разве что он может нажать "ok" для установки плагина.. только плагины я тем более писать не умею..( |
| Автор: Alx 14.11.2006, 14:48 |
| только поподробнее) если Java|VB|Action -Script нельзя, может, правда плагин? только как? хотя мне почему-то кажется, что на флеш - точно можно сделать... |
| Автор: pythonwin 15.11.2006, 10:26 | ||
http://forum.vingrad.ru/index.php?showtopic=117849&view=findpost&p=906248 + можно в личку |
| Автор: dstorm81 16.11.2006, 10:55 | ||
вот это под винду только, переход вверх сделай сам
|
| Автор: pythonwin 16.11.2006, 11:05 |
| dstorm81, прикольно - ++1 |
| Автор: Alx 17.11.2006, 00:51 | ||
ррр из нета опять не пашет :/
... http://alx.vingrad.ru/other/show_user_files.html (код dstorm81 без изменений..) |
| Автор: dstorm81 17.11.2006, 09:19 |
| млин, точно, выходит полная лажа, остается писать плагин для осла хотя попробуй еще через флэш, я где-то пример видел как через флэш узнают какие шрифты у пользователя стоят, а вот узнать какие файлы... не уверен но с большой долей уверенности могу сказать что нельзя для лисы, можно попробовать расширения, которое будет следить за адресной строкой и если урл совпадает что-то делать.. это надо копать в сторону мозилловский форумов. хотя не уверен ... но может и получится что... а вообще для чего такой гимморой нужен, хотя б\п тема интересная... может можно через input type="file" обойтись |
| Автор: Alx 17.11.2006, 23:26 |
| да я хотел попробывать webftp сделать... Добавлено @ 23:31 хочется услышать мнение модеров форума |
| Автор: dstorm81 24.11.2006, 08:34 |
| 2Alx нашел способ чтобы тот, мною ранее написанный, код заработал (MSIE 6.0SP2, виндаХР не обновлялась из нета ни разу) и MSIE 7 (алгоритм тотже) здесь немного усложненный вариант скрипта http://dstorm.jino-net.ru/dsscripts/activex/DiskViewer.rar итак заходим на страницу сервис>свойства обозревателя>безопасность> выбираем местная интрасеть> нажимаем кнопку узлы> дополнительно>добавляем узел в зону (http://alx.vingrad.ru). нажимаем Ок опять же на местной интрасети>кнопка другой>ищем использование элементов ActiveX не помеченных как безопасные>ставим галку предлагать/разрешить. Все теперь по переходу на этот узел все будет запускаться. тут проблема в том, что надо много двигать мышкой, чтобы включить сайт в узел интрасети. здесь может помочь reg файл который поставит сайт куда надо и сделает исправления в реестре. НО вышеуказанные действия изменяют настройки всех интранет ресурсов, что не есть хорошо для админа сети (безопасника) я тут посмотрел по опциям, увидел что галка стоит на [предлагать запуск] на узлах которые работают через https протокол то есть попробуй на сайте использовать этот протокол |
| Автор: butionok 22.4.2007, 22:49 |
| Вот то, что я на эту тему сделал http://www.ineos.ac.ru/~mboutovs/Browser/browser.html Работает естественно только в ИЕ. |