Как создать архив в JS?
Подскажите пожалуйста, каким образом можно "заставить" javaScript заархивировать файл или папку, назначить имя архиву и сохранить полученный архив в указанное место? Заранее благодарен всем ответитвшим!
|
вы не уточнили, откуда надо брать файлы, и куда их архивировать:на сервере, или на клиенте.
В любом случае,для Браузерного JS, ответ: НИКАК! вы не можете работать с файловой системой пользователя. максимум что вы можетие - это попросить его отправить файл на сервер(при этом JS этот файл все равно не увидит) Либо попросить сервер прислать какой-то файл в клиент(например тот же пересланный пользователем) ко всему, что JS не умеет сам работать с файловой системой, у него нету встроенных средств архивации.ИБо не нужны Если же вы имеете в виду JS в составе WSH, то ответ очень простой:берете любой архиватор, имеющий возможность работать из командной строки, и принимать все необходимые для архивирования параметры.и запускаете его для необходимых вам файлов |
можно и из браузера, если речь идет не о страничке сайта
|
Архиватор-то написать можно, все остальное от условий задачи зависит. Пример архиватора, создающего самораспаковывающийся архив http://dean.edwards.name/packer/
|
x-yuri,
а можно поподробней, о том, что можно сделать из браузера по этому поводу? и что из этого можно сделать не используя серверных скриптов. Kolyaj, я не думаю, что пакер-это то, что нужно человеку. чудя по его посту его интересует именно создание "класических"архивов, которые можно было бы распаковать винраром например. К тому же пакер, насколько помню перед пакованием урезает лишние пробелы каменты и прочее.этот подход не везде является допустимым |
Цитата:
|
Цитата:
|
x-yuri,
именно поэтому ИЕ такой небезопасный))) к WSH на нормальном уровне безопасности из осла доступа нет. мне кажется сейчас в осле нельзя получить доступ к сторонним объектам через COM, при нормальном уровне безопасности. в любом случае даже при разрешении всего выше головы не прыгнеш, и кроме того, что можно сделать в WSH из браузера не сделать. так что использование этого решения не кросплатформенно. А вообще, где топик-стартер? Iron_Mind, скажите нам что вас конкретно надо сделать, и возможно тчо-то удастся сжделать.а возможно и нет |
Gvozd, я писал "можно и из браузера, если речь идет не о страничке сайта"
|
x-yuri,
Сорри, не увидел. в любом случае для этого надо использовать только один браузер, и с индивидуальными настройками безопасности |
Уточнение))
Цитата:
|
это можно сделать средствами WSH. Единственная проблема, это как указать что надо архивировать и куда записывать. Это можно указать в командной строке.
Если же эти параметры фиксированы, то проблем не вижу. Правда для этого и cmd можно воспользоваться |
Еще уточнение)
Цитата:
А если надо запускать скрипт на разных компах, но на них всех 100% в определенном месте лежит нужная папка. Вот её то и надо в архив. Именно так чтобы принести или отправить скрипт, там запустят и создается архив в нужном месте. Такова точная тех.задача. Я просто новичок в JS, а сделать хочется)) |
А насколько медленней работает js относительно исполняемых файлов не думали ?
Для простых файлов может и сработает, в виникспи есть еще html приложения (знатоки поправят как они точно называются, с помощью них иногда автораны для cd делают), они тоже на js пишутся, там как раз вроде есть классы для работы с файловой системой. Самый простой путь написать архиватор - найти в сети уже написанные архиватор на php и используя файл php.js (есть такой в сети - там написаны функции,выполняемые php на js ) переделать его на js. |
почему бы средствами командной строки не обойтись? Ведь все равно к ней сведется? - создать cmd-файл
в cmd-файле это будет просто запуск архиватора с нужными ключами, на js будет то же самое + пара лишних команд |
Олег,
Цитата:
Цитата:
|
Цитата:
У этого скрипта архивация - лишь первая часть, вторая часть например отправка этого архива или копирование и т.п. Вот в чем суть.. Вторая часть есть, осталось сделать арх. В принципе добавить больше нечего. |
предположу что на каждом из компьютеров установлен WInRAR.(мне неизветсны методы создания архивов средствами JS)
создайте файл с расширением *.bat в нем запишите строчку Код:
"C:\Program Files\WinRAR\rar" a C:\Downloads\1.rar C:\Downloads C:\Downloads\1.rar - путь к создаваемому архиву C:\Downloads - архивируемая папка. каждый из путей, в котором есть пробелы(как у меня Program Files) надо записывать в двойных кавычках. Двойной щелчок по получившемуся файлу откроет окно консоли, и после завершения процесса архивации завкроет. Вуаля,JS для такой формы решения вашей задачи оказался не нужен. JS может понадобится только, если вам НИ В КОЕМ случае нельзя выкидывать окно консоли, либо вам нужно некоторые параметры настраивать по мере выполнения(например пути), либо эта функция будет реализована в рамках другого кода на JS заточенного под WSH. Вот решение этой же задачи в аналогичном виде на JS var WSHShell = WScript.CreateObject("WScript.Shell"); WSHShell.Run('"C:\\Program Files\\WinRAR\\rar" a C:\\Downloads\\1.rar C:\\Downloads',0); Коментарии те же, только добавляю что каждый символ \ надо экранировать(писать два раза вместо одного) |
Благодарность
Большое спасибо за ответы и терпение! )) Буду пробовать. Но у меня смутные чувства что я еще обращусь за советом)) Всего хорошего!
|
Цитата:
Если все сделано в WSH, то можно в нем же и продолжать |
А если это Unix то еще проще пишете обычный shell скрипт :) в 3 строки :)
|
Цитата:
Дерзай :) |
Цитата:
и это отняло бы часть хлеба у програмистов. но незначительную. потому что как не помню кто сказал "компьютер позволяет мне решать проблемы, ктороых без него у меня не было бы" я это понимаю, как чем боьше у человека знаний о возможностях компьютера, тем шире спектр его задач, для компьютера. Например, до того как я познакомился с DC, а затем с торрентами, передо мной не стояла задача качественного поиска по этим сетям, ибо для меня были только HTTP и FTP, ссылки на которые я получал у яндекса(каюсь), и это было для меня приемлимо. чейчас же я пытаюсь написать свою систему индексации и поиска по DC. и не потому что мне надо нати файл, который обычным протоколом DC трудно найти, а пот ому что интересно. короче,я извиняюсь за выкладывание своих эмоций(порядочные люди делают болги для таких постов), и флуда в общем-то, но думаю оно туту мешать николму не будет. Kolyaj, я так глянул, это спецификация одного(я не сильно подробно смотрел) из форматов сжатия. правда ваша ссылка мне не нужна(задача не моя), а топик стартеру навряд ли получится реализовать этот алгоритм(а за него писать бесплатно станет только человек котрому скучно, либо интересно добавить еще одну функцию в свою ютюлиотеку кодов). но, все равно большое спастбо |
Gvozd,
Для меня просто дико, и интересно одновременно, то о чем Вы так часто говорите. Всякие WHD или как там :) . Самому просто приходится винду запускать только под виртуальной машиной и то для отладки скриптов под Осла и Хромого. |
Gvozd,
мне кажется, что если бы виндоус не было, придумали что нибудь другое, как она (например, макось поднялся бы, у которого M$ скопировали некоторое из интерфейса, про теперешнее заимствование технологий M$ типа канвы, XMLHttpRequest, CSS3 Web Fonts, opacity, text-shadow, Client-side Database Storage ..., которые были еще в 5м эксплорере это другой разговор ... ), в ней главное - это простота использования, незачем что-то изучать, придумывать - просто взял и сделал что нужно с помощью щелчка мыши. Ведь, на рынке обычно два крупных конкурента, и, 3й догоняющий первых 2, и несколько отстающих, это как гугл и яндекс, одноклассники и вконтакте, да можно много примеров привести .... Множество элементарных вопросов всегда будет - ведь народ учиться, ему проще написать пару строк и немного подождать пока ему все объяснят и преподнесут те, кому охото показать свои знания, помочь кому-то, пообщаться или поддержать ресурс, чем сидеть и долго вникать в проблему. |
Zibba,
Windows Script Host это два интерпретатора для JScript (и VBScript) - один имеет оконный интерфейс (wscript.exe), другой - консольный (cscript.exe). По сути, если в windows создать файл с расширением .js и открыть его двойным кликом, то он будет выполнен интерпретатором wscript.exe. Исполняемые скрипты имеют доступ через ActiveX к объектам системы, с помощью которых они могут управлять реестром, файловой системой и делать другие интересные вещи. |
Андрей Параничев,
Спасибо за развернутый ответ. Я себе это прмерно и представлял как набор объектов, расширяющих возможности системы, доступных из Майкрософтовской реализации JS. |
Zibba,
Ну объекты есть и без WSH, они доступны практически из любого языка (в качестве OLE или ActiveX). Кстати тот интерпретатор, что работает в браузере Internet Explorer, и тот, что находится в составе WSH - разные вещи, хотя синтаксис JScript в обоих случаях одинаковый. Добавлено: А может один и тот же, на "низком" уровне, но в WSH он запускается через ActiveX, опять же. В общем, на счет этого я не уверен. Но в HTA (HTML Application) похоже используется WSH. |
Zibba,
честно говря. я готов преклонить колени перед вами в связи с выбором вашей десктопной системы Олег, примерно шестая счать осей UNIX-based не сложенее а проще, для ежедневного использования простым пользователем чем винда, при условии, что это первая его система.НО винда лучше прорекламирована в данный момент. посему трудно представить что было бы без нее, наверняка Андрей Параничев, WSH предусматривает два интепритатора для упомянутых вами языков, и возможность добавления новых. я читал доки, где утверждалось, что в качестве WSH можно использовать например Perl, при по мощи определенных манипуляция с системой.сам такого не делал Цитата:
Просто набор объектов доступных на старте программы отличается немного(в юраузере есть window, и document.в WSH есть WScript) Опытов с HTA я почти не проводил, и не в курсе есть ли там этот объект. Вот в браузере точно его нету --------------------------------------------------------- Извиняюсь перед всеми кто вынужден был прочитать мой пост до редактирования. был экспресивен и резок.+куча опечаток.И вообще. |
Gvozd,
Боже, сколько опечаток. В этой теме практически все посты релейтед к теме обсуждения, кроме того, выносить сообщения в отдельные темы так, чтобы они не казались "вырванными" из контекста, очень сложно. И пожалуйста, не ругайтесь матом, все-таки приличный форум у нас. |
Часовой пояс GMT +3, время: 03:06. |