Zpro

Местный хулиган | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору есть ли такой скрипт, или прога? Добавлено Вот нашел что-то, но не рабочее... Давайте доведем до работоспособности Цитата: #!/usr/bin/perl ############################################################################ # # # Downloader Version 1.0 # # Автор: Елистратов Р.М. romane@matrixchat.ru # # Создана 4/16/01 Последняя модификация 8/16/01 # # # # Назначение: Скачивание файлов с сервера по HTTP/FTP # # # # Настройки: # # 1. проверка пути до инторпретатора Perl # # пример: /usr/bin/perl или /usr/local/bin/perl # # 2. настройка переменной пути по умолчанию $default_path # # знак "/" в конце переменной обязателен (!) # # пример: $default_path = "/home/user/download/"; # # 3. настройка шрифтов в форме # # $font_style - основные надписи # # (например: URL до файла) # # $font_style_comment - надписи-подсказки # # (например: текстовый (Тип файла)) # # $font_style_error - надписи-"ошибки" # # (например: Сервер не отвечает) # # 4. html-форма, содержится в подпрограмме DForm # # при ее изменении рекомендуется не менять имена полей # # # # Обязательные параметры: # # 1. модуль CGI.pm для получения данных формы # # 2. модуль LWP.pm для получения содержимого файла # # # # Дополнительная информация: # # manual.html - файл информации # # # ############################################################################ use CGI qw(param); use LWP::UserAgent; $default_path = "/home/user/download/"; #путь по умолчанию до места сохранения файла $font_style = qq[<font face=Arial size=2>]; #стиль основных надписей $font_style_comment = qq[<font face=Arial size=1>]; #стиль надписей-подсказок $font_style_error = qq[<font color=red face=Tahoma size=2>]; #стиль надписей-"ошибок" $id = param("id"); %subs = (0 => 'DForm', 1 => 'DSave', 2 => 'DError'); print "Content-type: text/html\n\n"; eval('&'.$subs{$id}) || &DForm; exit; # Html-форма, с учетом ошибок и запоминанием последней конфигурации заполнения полей # sub DForm{ # проверка выделения radio-button в форме # $checked_typefile0 = " checked" if $typefile == 0; $checked_typefile1 = " checked" if $typefile == 1; $checked_typecode0 = " checked" if $typecode == 0; $checked_typecode1 = " checked" if $typecode == 1; # вывод самой формы # print qq[<hmtl><head><title>Downloader v 1.0 by CreatoR</title></head> <body> @_[0] <form method=POST> <input type=hidden name=id value=1> <table border=0 cellpadding=2 cellspacing=2> <tr><td valign=0>$font_style URL до файла: </font></td><td valign=0><input type=text name=url value="$url_path"><br>$font_style_comment например: http://www.test.com/files/file.zip </font></td></tr> <tr><td valign=0>$font_style Путь сохранения файла: </font></td><td valign=0><input type=text name=path value="$path"><br>$font_style_comment например: /home/user/download/ </font></td></tr> <tr><td valign=0>$font_style Тип файла: </font></td><td valign=0><input type=radio name=typefile value=0$checked_typefile0> $font_style_comment текстовый <input type=radio name=typefile value=1$checked_typefile1> бинарный</font></td></tr> <tr><td valign=0>$font_style Кодировка: </font></td><td valign=0><input type=radio name=typecode value=0$checked_typecode0> $font_style_comment cp1251 <input type=radio name=typecode value=1$checked_typecode1> koi8-r</font></td></tr> <tr><td valign=0 colspan=2 align=right><input type=submit value="Загрузить"></td></tr> </table> </form> </body> </html>]; } # Собственно сам процесс сохранения # sub DSave{ # проверяем полученные данные на ошибки, одновременно с получением этих данных # &DError; # получаем имя для сохраняемого файла, исходя из начального URL # $name_file = substr($url_path,rindex($url_path,"/")+1,length($url_path)); # подключаемся к серверу, используя метод GET # $ua = new LWP::UserAgent; $ua->agent("Downloader v. 1.0 by CreatoR ".$ua->agent); $url = $url_path; $req = new HTTP::Request GET => $url; $res = $ua->request($req); # если ответ сервера получен положительно, то... # if($res->is_success){ $content = $res->content; # преобразуем cp1251 в Koi8-r если в форме было выбрано "koi8-r" # $content = &KoiToWin($res->content) if $typecode == 1; # обрабатываем результат скачивания в зависимости от уставленного флага "текстовый/бинарный" # if($typefile == 0){ @lines = split(/\n/, $content); } else { push(@lines,$content); } if($typefile == 1){ binmode(STDIN); binmode(STDOUT); } # записываем файл. Внимание ! Если $name_file имеет имя уже существующего файла, то файл будет перезаписан # open(FILE, ">".$path.$name_file); binmode(FILE) if $typefile == 1; print FILE @lines; close(FILE); # сообщение-"ошибка" об успешной загрузке файла # &DForm($font_style_error.'Файл '.$name_file.' закачан в '.$path.'</font>'),exit; } else{ &DForm($font_style_error.'Сервер не отвечает</font>'),exit; } # сообщение-"ошибка" о невозможности подключения к серверу } # обработка ошибок, если таковые есть # sub DError{ # получаем данные из формы # $url_path = param("url"); $path = param("path"); $typefile = param("typefile"); $typecode = param("typecode"); # проверяем на наличие нужной информации в полученных данных # $temp_url = $url_path; $temp_url =~ s/ //g; $temp_path = $path; $temp_path =~ s/ //g; $path = $default_path if length($temp_path) <= 0; &DForm($font_style_error.'URL не может быть пустым</font>'),exit if length($temp_url) <= 0; &DForm($font_style_error.'URL должен содержать http:// или ftp://</font>'),exit if $temp_url !~ /http:\/\// && $temp_url !~ /ftp:\/\//; } # Преобразование кодировки cp1251 в Koi8-r # sub KoiToWin{ my $pvdcoderwin=shift; $pvdcoderwin=~ tr/\xE1\xE2\xF7\xE7\xE4\xE5\xF6\xFA\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF2\xF3\xF4\xF5\xE6\xE8\xE3\xFE\xFB\xFD\xFF\xF9\xF8\xFC\xE0\xF1\xC1\xC2\xD7\xC7\xC4\xC5\xD6\xDA\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD2\xD3\xD4\xD5\xC6\xC8\xC3\xDE\xDB\xDD\xDF\xD9\xD8\xDC\xC0\xD1/\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF/; return $pvdcoderwin; } |
| Всего записей: 638 | Зарегистр. 07-04-2004 | Отправлено: 07:07 24-09-2004 | Исправлено: lynx, 02:36 09-10-2004 |
|