Чтение каталога на стороне клиента средствами javascript

jer

...
Чтение каталога на стороне клиента средствами javascript

Нужно на стороне клиента выбрать сразу несколько файлов из директории.

<input type="file" .../> позволяет выбрать только один.

В сязи с этим собираюсь сделать средствами javascript'а.

Подскажите плиз как прочитать содержимое директории на стороне клиента javascript'ом?

предполагаю что ActiveX надо юзать.

ps: не люблю я этот javascript, а надо ;)
 

jer

...
Вы все серьезно?

малой кровью никак не обойтись?

что-то меня терзают сомнения.

надо то всего-лишь прочитать содержмое каталога на стороне клиента.
 

lucas

Guest
малой кровью никак не обойтись?
Поищи в интернете готовые решения.
Я имею в виду, готовые бесплатные решения.

надо то всего-лишь прочитать содержмое каталога на стороне клиента
...что само по себе является серьезной дырой в безопасности, особенно ввиду идеальности ("отсутствия багов") реализации ActiveX в IE.
 

jer

...
lucas
Поищи в интернете готовые решения.
Я имею в виду, готовые бесплатные решения.
пока не нашел ;(
...что само по себе является серьезной дырой в безопасности, особенно ввиду идеальности ("отсутствия багов") реализации ActiveX в IE.
абсолютно согласен. даже скажу больше, мне как раз эта причина и пришла на ум в аргументацию сложности нахождения такого решения. пожалуй единственная.

Crazy

не стоит этого у меня, и нету дистрибутива под рукой. ;( так что в моем случае это займет явно не пару часов.


Опишу задачу по-другому, может тогда что подскажите...

нужна возможность закачивать на сайт сразу несколько файлов. точнее - нужна возможность выбора сразу нескольких файлов для закачки.
может можно как-то извратиться через iframe с закачкой по ftp?

это нужно для закачки в CMS-ке фотографий товаров целой пачкой, а не по одному.

неужели никто не сталкивался с такой задачей?

ps: что-то после вчерашнего пива плохо думается ;)
 

IBSN

Новичок
НЕЛЬЗЯ, выпей еще пива чтобы думалось... ты хоть весь сайт ифрэймами заштопай - толку 0...
хочешь изврат???
делай в ифрэйм адрес на фтп типа src="ftp://name@pas:server.com/www/site/files" вот тебе и изврат, иначе говоря - через жопу....
 

jer

...
IBSN

да, я так и подумал, только это ничего не даст ;(

-~{}~ 03.10.04 16:55:

lucas

сенькс, пошел читать...

-~{}~ 03.10.04 17:46:

почитал топик, пришли ктому что выход - закачивать по фтп. ;)

но фтп не устраивает по разным причинам. ;(

придумал еще один вариант!

несколько извратный, но ИМХО должен сработать. и не потребуется качать всякие глючные апплеты. а только один html-файл.

создаем на странице <iframe src="file:///c:/"></iframe>

если этот html-файл запустить с машины клиента, то во фрейме отображается содержимое локального диска.

дальше все - дело техники.
примерно так: этот iframe делаем невидимым, а для навигации и выбора файлов для закачки пишем на яваскрипте нужный интерфейс. после выбора файлов для закачки динамически создаем форму с нужным количеством <input type="file" .../> с выбранными файлами и сабмитим ее.

только нужно решить вопрос авторизации. но так как это будет использоваться всего несколькими людьми, работающими с CMS, то ИМХО достаточно сделать какую-то достаточно примитивную (условную) авторизацию.

ну и для работы с такой закачкой нужно будет сначала скачать этот html-файл на локальную машину.

что скажете?
 

lucas

Guest
если этот html-файл запустить с машины клиента, то во фрейме отображается содержимое локального диска.
Да ну? :) В каком таком идиотском браузере?
Где это описано в стандарте?

для навигации и выбора файлов для закачки пишем на яваскрипте нужный интерфейс
Покажите-ка мне пример для получения списка элементов в папке и перехода в подпапку в таком iframe на J[ava]Script, пожалуйста.

ну и для работы с такой закачкой нужно будет сначала скачать этот html-файл на локальную машину.
Судя по формулировке, это пахнет http://phpfaq.ru/na_tanke.
 

jer

...
lucas
Да ну? В каком таком идиотском браузере?
у меня в ИЕ 6 и Мозилла 1.7
подозреваю что в любом под виндой.

вот код, попробуй у себя:
PHP:
<html>
<head>
<title>bla-bla</title>
</head>

<body>

<iframe src="file:///c:/"></iframe>

</body>

</html>
Где это описано в стандарте?
да, в стандарте протокола file:// нету, но под виндовозиной это работает и этот факт можно использовать.

Покажите-ка мне пример для получения списка элементов в папке и перехода в подпапку в таком iframe на J[ava]Script, пожалуйста.
покажу, но позже. как займусь реализацией этого.
если приведенный код работает, то для изменения папки нужно изменить src и обновить iframe.

Судя по формулировке, это пахнет http://phpfaq.ru/na_tanke.
обижаешь, да? ;-(
 

IBSN

Новичок
покажу, но позже. как займусь реализацией этого.
если приведенный код работает, то для изменения папки нужно изменить src и обновить iframe.
Мы тебе памятник поставим тогда
обижаешь, да? ;-(
Нет, ставим диагноз...
 

lucas

Guest
вот код, попробуй у себя
Mozilla Firefox 0.9.2 (за что ему спасибо) ничего, естественно, не отображает и пишет прописную истину:
Security Error: Content at http://localhost/ may not load or link to file:///c:/.
если приведенный код работает, то для изменения папки нужно изменить src и обновить iframe
Ждем самого простого примера реализации...

Если честно, мое мнение таково: не стоит пытаться реализовать однобокие решения, основанные на чьих-то шизофренических представлениях о безопасности среди производителей браузеров.

Предоставь возможность загружать архив файлов. который распаковывай на сервере. Решение 100% рабочее, и, самое главное, чрезвычайно удобное -- запаковать файлы в архив сможет даже полный чайник.
 

jer

...
вот, нашел еще такое решение:

PHP:
<html>
<head>
<title>bla-bla</title>
</head>

<body>

<SCRIPT LANGUAGE="JScript">

function ShowFolderList(folderspec)
{
   var fso, f, fc, s;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   f = fso.GetFolder(folderspec);
   fc = new Enumerator(f.SubFolders);
   s = "";
   for (; !fc.atEnd(); fc.moveNext())
   {
      s += fc.item();
      s += "<br>";
   }
   return(s);
}

document.write(ShowFolderList("c:/"));

</SCRIPT>

</body>

</html>
тестировал в ИЕ (в настройках безопасности надо включить "Использование элементов ActiveX, не помеченные как безопасные" )

что касается примера кода о котором я говорил - я согласен что это подход в принципе очень нехороший и про безопасность тоже говорил. но почему его нельзя реализовать? объясните (IBSN или lucas) принципиальную невозможность реализацию этого? при условии что браузер во фрейме показывает содержимое каталога, а он показывает (не во всех, как выяснилось, либо при особых настройках безопасности), то я не вижу принципиальной невозможности такой реализации. если уж Вам так это важно (увидеть код), то могу на днях набросать его. (время жалко тратить ;( )


lucas

насчет идеи с архивом - неплохое решение, подумаю над этим. возможно так и реализую.
 

Фанат

oncle terrible
Команда форума
Вот lucas-то просто умрет от счастья, если ему такое одолжение сделают.
 

jer

...
Фанат

думаешь? сделать чтоли и правда? ;)
просто не понимаю иногда вашего такого отношения... ;-( я (и не только) пытаюсь решать конкретную задачу, а не доказывать кому-то свое умение программировать. тем более что уже нашел альтернативный и более верный способ решения.

я не прочь поспорить по-существу, пусть он мне сначала ответит на мой вопрос.
 

Фанат

oncle terrible
Команда форума
Да кому ты сдался - с тобой спорить?
С тобой никто не спорит. Тебе разжевывают прописные истины.
И никто твое умение не обсуждает. Что вы все за него хватаетесь, как за мамкину сиську? Чуть что - сразу "умею программировать".

Тебе сказали, какие тебе встретятся косяки. Охота маршировать по граблям - ради бога. Уговаривать тебя, чтобы ты сделал правильно в виде одолжения - не многовато ли чести?
 

jer

...
да, блин. я прекрасно понимаю что эти решения с граблями!, о чем сам и писал и не отрицал. просто задача ставилась заведомо с нарушением некоторых основ безопасности. но т.к. это решение будет использоваться всего несколькими людьми, то я счел этот компромис приемлемым.

вариант с архивом мне очень понравился как альтернативное решение.

Фанат, ты в обсуждении не участвовал, а тут вылез. Понозить чтоли? судя по форме наезда... ;-( сам же флейм раздуваешь.

видишь ли, меня никто не уговаривает (и не надо) делать правильно, мне сказали что это не реализуемо (я так понял из желания увидеть код в обмен на памятник). вопрос не в том даже правильно это или нет.

и решение предложеноое мной было не единственно верное (скорее наоборот), а как один из вариантов при поиске оптимального.
 
Сверху