[web] Загрузить целую папку
Еще во flash можно сразу несколько файлов загружать. Но не папку, правда.
кроме того, что сделать так нельзяпожалуй, соглашусь
кстати, не вижу в данонм случае различий между флэш, джава и джаваскрипт
на них на всех должно это самое соображение секьюрности распространятся
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFolder(folderspec);
var fc = new Enumerator(f.Files);
var s = "";
for (; !fc.atEnd; fc.moveNext
s += fc.item + "";
return s;
Вернёт список файлов. По идее. Только у меня ослик пишет, что, мол, не может этот объект создать. В первой же строчке.
Да, совсем забыл сказать! Поддержка Лисов и Опер не принципиальна. То есть для решения этой проблемы можно использовать Микрософтовские расширения под названием JScript. Какие-нибудь ещё есть мысли?
Еще во flash можно сразу несколько файлов загружать. Но не папку, правда.
Много файлов сразу можно грузить и обычными формочками. И принимать их в ПХП. Мне это и нужно, с этим справлюсь. Вся суть в том, чтобы получить список всех файлов, которые лежат в папке. Вот что я не знаю, сделать как.
Если посмотришь, как это сделал Google, то у них есть специальная штука - Google Video Upload.
"Scripting.FileSystemObject"
что за объект? Я в активиксах не силён, но вроде это что-то стандартное? Как сделать, чтобы оно создавалось? Что дома, что на работе пишет ошибку сервера автоматизации при создании объекта.
чтобы выполнять такие действия, пользователь должен снизить уровень безопасности до минимума. Такое вряд ли кто-то захочет сделать. Скорее согласятся установить ActiveX.
Попробовал разрешить выполнение любых активиксов для локальной сети (локалхост проверить) - заработало. При этом антивирь заругался. Фича нужна для использования в локалке на работе. Антивирь у всех клиентов стоит. Думаю, можно как-нибудь настроить антивирь, чтобы скрипты с моего хоста запускали любые активиксы, а другие неподписанные пресекались без предупрежедний. Будем думать в этом направлении.
Он все умеет даже не в интранете а в интернете
я когда увидел, долго подбирал челюсть с пола
Что есть exchange?
1) Если хочешь не устанавливать JRE, то нужно писать ориентируясь под MS JVM (соответствует java 1.1). Чтобы получить доступ к файловой системе, апплет должен быть подписан, но jvm от мелкомягких не распознаёт подписаные джары - там нужно будет собирать и подписывать кабы, которые, в свою очередь, не распознаёт сановская jvm (если она вдруг установлена) То есть нужно будет собирать обязательно и джары, и кабы и на страниче прописывать их оба.
2) Даже если апплет будет под java 1.1, но у клиента стоит Win XP SP2, то JRE ему ставить, всё равно, придётся, так как второй сервис пак при установке сносит ms jvm.
А чтобы обойти антивиря, попробуй eval
Я имею в виду контролы, устанавливаемые в браузер. IE-only. При этом пользователь получает предупреждение и должен разрешить установку контрола.
При этом не вижу принципиальной разницы в установке контрола и установки Java (напр. Web Start).
Лет 7 назад я делал подписанный апплет для upload-а, Java 1.1, работало под IE 4 и Netscape 4. Но гемора очень много, особенно если присутствуют русские буквы и т.п. При установке подписанного апплета примерно такое же предупреждение, как в случае ActiveX.
Так я же уже сказал, что сделал это с помощью скриптов. Надо просто с настройками безопасности поколдовать. При этом НИКАКИХ дополнительных прог или контролов ставить не надо, т.к. я использую активикс от WSH, который и так есть в любой винде, начиная с 98.
А делается с помощью скриптов это очень просто - при нажатии на кнопку я получаю джаваскриптом список файлов из папки (как раз с помощью активикса WSH создаю в форме кучу инпутов типа файл, и делаю сабмит. Сервер принимает их все.
создаю в форме кучу инпутов типа файл, и делаю сабмитА как ты в инпут типа файл подставишь нужное имя файла?
Из соображений безопасности это невозможно (а вдруг ты подставишь /etc/passwd?) Есть только всякие уже неработающие хаки вида "записать в буфер имя файла, когда пользователь нажмёт Ctrl, поместить фокус в инпут типа файл, сэмулировать нажатие V и отправить форму, а сам инпут сделать скрытым"
Если посмотришь, как это сделал Google, то у них есть специальная штука - Google Video Upload.Это ж отдельная клиентская программа?
Нельзя научить пользователей юзать zip?
Что касается того, как я забъю имя файла в файл... Да мне, вообще говоря, файлы и не нужны. Мне только имена нужны. Их можно упаковать в хиддены на крайняк. И никаких извращений с эмулящиями нажатий тут не нужно.
Мне только имена нужны. Их можно упаковать в хиддены на крайняк. И никаких извращений с эмулящиями нажатий тут не нужноВсё-таки, не понял, как ты потом эти файлы на сервер загрузишь...
Есть некая сетевая папка, куда имеют полный доступ и клиенты и я. Джаваскрипт прямо на клиентской стороне будет копировать все файлы из указанной клиентом папки в эту сетевую папку. Зачем это нужно, и почему бы клиентам вручную не скопировать файлы в эту папку? Во-первых, все файлы должны одинаково называться, вроде file0001. Заставлять клиентов вручную переименовывать файлы, да ещё так, чтобы они не конфликтовали с уже имеющимися - слишком жестоко. Во-вторых, если я захочу изменить конечную сетевую папку, я просто изменю пару строк в скрипте, и для клиентов это останется прозрачно. Они могут вообще не думать о том, куда копируются эти файлы. Просто подготавливают у себя на локальном компе некие файлы (с некрасивыми названиями нажимают на кнопочку - и всё готово.
проще всем клиентам экзешник раздать, который будет всю работу делать
какая им разница, запускать браузер или твой экзешник?
и то и то будет ярлыком на раб столе
При том, что это лишь одна маааалюсенькая функция из большого приложения, которое запускается через браузер. И передалть его полностью в екзешник - дело не одной недели.
Хотя, конечно, можно попросить их выбирать любой файл в этой папке... но не будет ли это для них слишком сложно
Просто подготавливают у себя на локальном компе некие файлы (с некрасивыми названиями нажимают на кнопочку - и всё готово.А не легче ли заставить клиентов складывать файлы во вполне конкретную папочку, которая будет на их компе расшарена? А потом ты на сервере зайдёшь в шару клиента, и перетащишь эти файлы так как тебе надо в общую шару?
Джаваскрипт прямо на клиентской стороне будет копировать все файлы из указанной клиентом папки в эту сетевую папку.Не понял, как это будет происходить?
Не понял, как это будет происходить?на WSH это, действительно, можно сделать, хотя в данном случае, имхо, изврат
А не легче ли заставить клиентов складывать файлы во вполне конкретную папочку, которая будет на их компе расшарена? А потом ты на сервере зайдёшь в шару клиента, и перетащишь эти файлы так как тебе надо в общую шару?
Не легче. Потому как клиент и комп не взаимосвязаны - разные клиенты могут логиниться под своими никами на разных компах.
разные клиенты могут логиниться под своими никами на разных компахА хранить все профили, вместе с файлами, на сервере религия не позволяет
Тогда клиенту будет совершенно без разницы, что это за комп.
Не тормози. Я так и делаю. Собственно, для этого и нужна эта фича - чтобы все файлы хранились на сервере. Клиентам проще работать с локальным компом - они в свои локальные папки складывают файлы, а потом нажимают на кнопочку и файлы оказываются на сервере в нужном месте и с нужными именами. Клиент не обязан знать, где лежит это нужное место. Потмоу что в конечном итоге оно может перемещаться. И клиента это не должно волновать.
Без всякого геморроя будет - у клиента нет никаких локальных папок, и всё сразу кидается на сервер, полностью прозрачно для него...
там скорее всего недокументированное апи и оно не будет работать пока бинарник не подпишет мкрсфт
Потому что нет времени на переход на всякие активдиректори и переучивания клиентов. Клиент привык хранить файлы в папке С:\Файлс, а желание клиента - закон.
Шутку понял, смешно.
Если пользователи привыкли всё кидать в какую-то папку на диске C - зачем им делать эту папку локальной, пусть она тоже берётся с сервера
Это, кстати, неправильно, клиентов надо переучивать.
Потому что обратная совместимость бывает, и даже слишком часто, вредна.
А пользователи часто желают того, чего сами не знают.
---
...Я работаю антинаучным аферистом...
1) на каждом компе, куда может залогиниться клиент, делать сабст;
2) переименовывать партишн мэджиком диск С:, чтобы он не конфликтовал с новым сабстом.
И ради чего всё это извращение? Для того, чтобы использовать активдиректори. Типа это круто. При этом гемора будет много, а пользы (что для меня, что для клиентов) ноль. Извини, но у меня нет такой самоцели - использовать активдиректори.
1) на каждом компе, куда может залогиниться клиент, делать сабст;Ага, при каждом логине клиента делать subst или симлинк (логины, естественно, тоже будут проходить через общий сервер и он будет запускать логон скрипт - или ты на каждом компе руками учётные записи заводил?)
Для того, чтобы использовать активдиректори. Типа это круто. При этом гемора будет много, а пользы (что для меня, что для клиентов) ноль.Почему пользы ноль? У тебя проблема - клиенты что-то там делают на локальной машине, и надо это оттуда выковырять. Если использовать ad, то такой проблемы (и других похожих) у тебя никогда не будет - все файлы клиента всегда будут храниться на сервере.
Даже если бы у меня выполнялся ActiveX, я бы никогда не позволил какому-то ублюдку далать скан своей файловой системы.
Сам не делал, что что-то похожее видел как у других работает.
А ублюдки пусть подумают, как они будут на работе объяснять начальнику, что это, мол, моя файловая система (на рабочем компе!) и никакие ублюдки, вроде упомянутого начальника, сканировать её не имеют права.
И главное там по идее как раз можно, не требуя доп разрешений от пользователя, получить доступ к папке, которую пользователь выберет через open dialog.Хм. А это интересная информация. Спасибо, буду проверять.
Господа и прочие ублюдки! Вы так и не поняли специфику задачи. Надо решить пробелму с минимальными затратами. Переписывать ВСЁ приложение на .нет ради одной-единственной функции более, чем нерационально. Настраивать активдиректори - тоже. У клиентов нет времени на эту ерунду. Им по барабану, что находится внутри системы и как она устроена. Для них важно, чтобы можно было сесть за комп, на котором только что установлена свежая 98/2000 и сразу начать работать. Без дополнительных настроек и дополнительных прог.Умные люди еще до тебя создали для этих целей ad - залогинился в домен, и работаешь...
А ублюдки пусть подумают, как они будут на работе объяснять начальнику, что это, мол, моя файловая система (на рабочем компе!) и никакие ублюдки, вроде упомянутого начальника, сканировать её не имеют права.
Максимум, что требуется на клиентско машине - ввести ее в домен,но и это можно настроить..
А то, что делаешь ты - это назвается "онанизм".
Я тебе могу порекомендовать чела, который за вполне приемлемые деньги настроет тебе ad так, что это все будет прозрачно для клиентом, никому никуда переучиваться не надо будет, и трахать мозга с браузером - тоже.
Господа и прочие ублюдки! Вы так и не поняли специфику задачи. Надо решить пробелму с минимальными затратами. Переписывать ВСЁ приложение на .нет ради одной-единственной функции более, чем нерационально. Настраивать активдиректори - тоже. У клиентов нет времени на эту ерунду. Им по барабану, что находится внутри системы и как она устроена. Для них важно, чтобы можно было сесть за комп, на котором только что установлена свежая 98/2000 и сразу начать работать. Без дополнительных настроек и дополнительных прог.А ублюдки пусть подумают, как они будут на работе объяснять начальнику, что это, мол, моя файловая система (на рабочем компе!) и никакие ублюдки, вроде упомянутого начальника, сканировать её не имеют права.не надо ничего на сервере переписывать под .NET, я только предложил апплет сделать вместо ActiveX компонентом .NET — так как проще реализовать, и по идее если все правильно сделать, то у клиента IE не будет спрашивать дополнительного разрешения на выполнение апплета.
Умные люди еще до тебя создали для этих целей ad - залогинился в домен, и работаешь...Максимум, что требуется на клиентско машине - ввести ее в домен,но и это можно настроить..А то, что делаешь ты - это назвается "онанизм".Я тебе могу порекомендовать чела, который за вполне приемлемые деньги настроет тебе ad так, что это все будет прозрачно для клиентом, никому никуда переучиваться не надо будет, и трахать мозга с браузером - тоже.И как будет выглядит экспириенс пользователя? Наверно не получиться что-то типа: на странице где-то по месту кликнул Upload, в диалоге выбрал папку, нажал Ок, увидел результат на обновленной странице?
Хм. А это интересная информация. Спасибо, буду проверять.Нет, похоже я что-то спутал, есть только для файла OpenFileDialog.OpenFile
уже второй раз не понимаю, почему ты считаешь, что тебе предлагают переписать всё приложение?
у тебя есть кошерная программа написанная на html, ну и отлично.
дальше выясняется, что эта кошерная программа априори не умеет читать файлы с диска, так реализуй ты эту одну некошерную функцию в виде ActiveX, WScript-а, отдельного exe-шника, .net-контрола и все будет зашибись.
нахрена тебя тянет из-за одной функции переписать всё?
Умные люди еще до тебя создали для этих целей ad - залогинился в домен, и работаешь...
Максимум, что требуется на клиентско машине - ввести ее в домен,но и это можно настроить..
Чуве, не смеши меня. АД идёт лесом и "умные" люди, которые им пользуются, тоже.
Клиент собирает файлы разных типов у себя на компе. Нажимает на кнопку и они грузятся куда надо. При этом:
1) файлы получают уникальное имя вида userlogin_nnnnn
2) файлы разных типов кладутся в разные места. к примеру, файлы типа xxx в папку а файлы типа yyy в папку
Если посадить всех клиентов на АД, и сразу хранить все файлы на сервере, то:
1) надо будет учить их самих переименовывать файлы, да ещё и так, чтобы они не конфликтовали с другуими именами. Клиент - простой человек, може случайно нажать не на ту клавишу, и имя файла будет неверным. На переименование, скажем, 1000 файлов может уйти значительное время. Конечно, можно использовать всякие тулзы мультиренэйма, но нафига это нужно, когда сейчас пользователь наживает на одну кнопку - и всё готово?
2) надо каждому клиенту объяснять, что эти файлы надо класть в одно место, а эти - в другое. Клиент может случайно один файл положить не в ту папку. И как потом это разгребать? И тем более зачем, когда сейчас клиент нажимает на одну кнопку, и все его файлы премещаются в нужное место? Далее, если, к примеру, я вздумаю перемещать файлы типа yyy в папку то достаточно будет изменить три символа в скрипте. Если же будет АД, то придётся каждому клиенту объяснять, что теперь их надо ложить в другое место. И нафига всё это? Потмоу что АД - это круто, а активикс - аццтой.
Вот уж действительно будет полный АД!
А кто тебе мешает переименовывать файлы на сервере?
Умные люди еще до тебя создали для этих целей ad - залогинился в домен, и работаешь...Сколько ж умников нашлось посоветовать AD
Максимум, что требуется на клиентско машине - ввести ее в домен,но и это можно настроить..
А у кого-нибудь есть цифры по трудозатратам перевода в домен 100-200 рабочих мест (именно перевода, а не добавления новых)? Трудозатраты-то в основном не на сервере, а на клиентах. Вот у нас через 1-1.5 года после запуска AD по-прежнему процентов 20-30 народу не в домене, ибо ЛОМАЕТ народ чё-то делать со своими ноутами. Работает - не трошь
Чуве, не смеши меня. АД идёт лесом и "умные" люди, которые им пользуются, тоже.Клиент собирает файлы разных типов у себя на компе. Нажимает на кнопку и они грузятся куда надо. При этом:1) файлы получают уникальное имя вида userlogin_nnnnn2) файлы разных типов кладутся в разные места. к примеру, файлы типа xxx в папку а файлы типа yyy в папку посадить всех клиентов на АД, и сразу хранить все файлы на сервере, то:1) надо будет учить их самих переименовывать файлы, да ещё и так, чтобы они не конфликтовали с другуими именами. Клиент - простой человек, може случайно нажать не на ту клавишу, и имя файла будет неверным. На переименование, скажем, 1000 файлов может уйти значительное время. Конечно, можно использовать всякие тулзы мультиренэйма, но нафига это нужно, когда сейчас пользователь наживает на одну кнопку - и всё готово?2) надо каждому клиенту объяснять, что эти файлы надо класть в одно место, а эти - в другое. Клиент может случайно один файл положить не в ту папку. И как потом это разгребать? И тем более зачем, когда сейчас клиент нажимает на одну кнопку, и все его файлы премещаются в нужное место? Далее, если, к примеру, я вздумаю перемещать файлы типа yyy в папку то достаточно будет изменить три символа в скрипте. Если же будет АД, то придётся каждому клиенту объяснять, что теперь их надо ложить в другое место. И нафига всё это? Потмоу что АД - это круто, а активикс - аццтой.Вот уж действительно будет полный АД!чушь написал
клиент будет класть файлы в одну свою удаленную папку (у каждого клиента своя)
потом будет жать кнопку на твоей хтмл страницы, и скрипт (хоть пхп, хоть что угодно) перетаскает все куда надо и как надо
я не сторонник ad, нах его, долгое время загрузки клиентских компов, невозможность загруки если пропала сеть и всякая подобная фигня
может просто сделать для каждого чувака свою папку удаленно, подключить им всем это как диск X:
и уговорить их заходить в свою папку, жать ctrl+a, ctrl+c
а потом на диске X: жать ctrl+v
ну а потом жать кнопку в твоем хтмле
1) файлы получают уникальное имя вида userlogin_nnnnn
2) файлы разных типов кладутся в разные места. к примеру, файлы типа xxx в папку а файлы типа yyy в папку />
1) надо будет учить их самих переименовывать файлы, да ещё и так, чтобы они не конфликтовали с другуими именами. Клиент - простой человек, може случайно нажать не на ту клавишу, и имя файла будет неверным. На переименование, скажем, 1000 файлов может уйти значительное время. Конечно, можно использовать всякие тулзы мультиренэйма, но нафига это нужно, когда сейчас пользователь наживает на одну кнопку - и всё готово?Все твои четыре пункта справедливы только если пользователи будут выполнять работу скрипта.
2) надо каждому клиенту объяснять, что эти файлы надо класть в одно место, а эти - в другое. Клиент может случайно один файл положить не в ту папку. И как потом это разгребать? И тем более зачем, когда сейчас клиент нажимает на одну кнопку, и все его файлы премещаются в нужное место? Далее, если, к примеру, я вздумаю перемещать файлы типа yyy в папку то достаточно будет изменить три символа в скрипте. Если же будет АД, то придётся каждому клиенту объяснять, что теперь их надо ложить в другое место. И нафига всё это? Потмоу что АД - это круто, а активикс - аццтой.
И все они сразу же перестают иметь значение, как только ты поймёшь, что клиенты будут кидать файлы в свои клиентские папки, а при нажатии на кнопочку "загрузить" в веб-приложении, твой скрипт на сервере возьмёт файл из нужной клиентской папки (которая, опять же, лежит на сервере переименует файлы как нужно и раскидает их туда, куда ты хочешь.
И без всяких там извратов с activex.
Все твои четыре пункта справедливы только если пользователи будут выполнять работу скрипта.+1
И все они сразу же перестают иметь значение, как только ты поймёшь, что клиенты будут кидать файлы в свои клиентские папки, а при нажатии на кнопочку "загрузить" в веб-приложении, твой скрипт на сервере возьмёт файл из нужной клиентской папки (которая, опять же, лежит на сервере переименует файлы как нужно и раскидает их туда, куда ты хочешь.
И без всяких там извратов с activex.
2 автор треда: Если ты не хочешь даже подумать над альтернативными путями решения проблемы - то извини... Это ж каким тупоголовым надо быть, что бы бится головой о стену, когда рядом есть большая дверь? Тебе пол форума советует, что для твоих нужд ad подходит идеально, а ты, даже не узанв, что и как может делать ad кричишь, что твоя идей с браузером и php - идеальна....
Я бы на месте твоего начальника уволил бы тебя нафиг.
Оставь, кстати, нам его телефон - мы ему позвоним, и расскажем, как можно сделать быстро и качественно то, что ты мурыжишь уже небось не первый месяц....
Одни выходные, и все работыют на ad, причем для пользователей изменится только картинка при входе в комп - вместо мегаXP темы будет обычное окошко авторизации в домен.
Оставить комментарий
Flack_bfsp
Задача: клиент указывает в браузере папку, и на сервер грузятся все файлы из этой папки. Хотел обойтись простой связкой PHP + JavaScript, да не выходит. PHP не может читать с клиентских компов - всё-таки серверный язык, JavaScript не может прочитать содержимое папки по соображениям секьюрности.Можно написать Java-апплет для такого дела, но:
1) я ни разу не писал апплетов, Java знаю только теоретически;
2) весь серверный код написан на PHP, клиентский - на JavaScript, и не хотелось бы третий язык к ним приплетать;
3) на клиентские машины желательно не устанавливать никакого дополнительного софта.
Есть ли варианты решения проблемы? Гуглил, не нагуглил нечего хорошего, кроме того, что сделать так нельзя.