Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Stas Vlasov                          2:5080/172     13 Feb 2002  21:45:13
 To : Andrew Hapanovich
 Subject : Re: Заголовок ответа
 -------------------------------------------------------------------------------- 
 
 
 Tuesday February 12 2002, Andrew Hapanovich writes to Stas Vlasov:
 
  SV>>>> В качестве Content-type подставь свой, я так читаю книги из
  SV>>>> архивов.
 
  AH>>> Попробовал, ничего не меняется.
 
  SV>> Странно, странно. А два \n не забыл в конце?
 
  AH> Hет, не забыл.
  AH> А не мог бы ты мне кинуть свой скрипт
 
 Мог бы. Сейчас кину.
 
  AH> ( лучше на мыло hapanovich@tut.by)
 
 Чтоб еще и мои ошибки туда залезли?
 Вот скрипт (комментарии сейчас вписываю):
 Да, если встретишь в скрипте неиспользованные переменные - не удивляйся. Это
 только один такой скрипт. А было их несколько.
 =========
 #!perl
 
 use strict;
 
 my ($arg, $line, $nofiles, $name, $name2, @file, $file, $size,
     $basepath, $files, $argorig, $afile, $archive, $buff);
 
 $arg = $ARGV[0];
 #в $arg - имя.zip:имя_файла_из_zip.расширение.
 
 # чтоб нельзя было урл типа ../../../autoexec.bat соорудить.
 $arg =~ s/\.\.//g;
 $argorig = $arg;
 
 $arg =~ s/^\///g;
 #$arg =~ s/\//\\/g;
 #$arg =~ s/\\\\/\\/g;
 
 #здесь надо было бы переменными воспользоваться,
 #но тогда я про них не знал, а сейчас - переделывать лень.
 $basepath = "c:/Network/Public";
 
 $archive = (split ':', $arg)[0];
 $file = (split ':', $arg)[1];
 
 $afile = sprintf "$basepath/$archive";
 open INFILE, "/bin/unzip -C -p $afile $file|" || die "$!";
 binmode(STDOUT);
 binmode(INFILE);
 
 #тут сделано определение, текстовый-ли это файл. По расширению.
 if (($file =~ /\.[tT][xX][tT]$/)||($file =~ /\.[aA][sS][cC]$/)||
     ($file =~ /\.[dD][iI][zZ]$/)||($file =~ /\.[gG][iI][fF]$/)||
     ($file =~ /\.[jJ][pP][gG]$/)||($file =~ /\.[hH][tT][mM][lL]$/)||
     ($file =~ /\.[hH][tT][mM]$/)||($file =~ /^[A-Za-z_]+$/)) {
 
 printf "Content-type: text/plain
 Content-Disposition: inline; filename=\"$file\"\n\n";
 while ($line = <INFILE>) {
 
 #А тут - определение, нужна ли перекодировка.
    if (($file =~ /\.[tT][xX][tT]$/)||($file =~ /\.[aA][sS][cC]$/)||
        ($file =~ /\.[dD][iI][zZ]$/)||($file =~ /^[A-Za-z_]+$/)) {
       unless (length($file) > 12) {
 
 #собственно перекодировка. 866->1251. Кривовато, согласен.
 #Как-нибудь переделаю
          $line =~ tr
 /АБВГДЕЖЗИЙКЛМHОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяЁё/АБВГДЕЖЗИЙК 
 ЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯрстуфхцчшщъыьэюяЁётуфхцчшщъыьэюяиё/;
       }
    }
    printf "$line";
 }
 } else {
 
 #А вот тут передаются бинарные файлы.
    printf STDOUT "Content-type: application/octet-stream
 Content-Disposition: attachment; filename=\"$file\"\n\n";
    while (read(INFILE, $buff, 1)) {
       print STDOUT $buff;
    }
 }
 
 close INFILE;
 ========
 Good luck.
          Stas
 
 --- Еще одно "золото" 3.0.1
  * Origin: gui is good, but console better (2:5080/172)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Заголовок ответа   Andrew Hapanovich   05 Feb 2002 10:06:24 
 Re: Заголовок ответа   Max Kosyakov   07 Feb 2002 11:58:33 
 Re: Заголовок ответа   Stas Vlasov   06 Feb 2002 20:22:05 
 Заголовок ответа   Andrew Hapanovich   07 Feb 2002 10:08:19 
 Re: Заголовок ответа   Stas Vlasov   09 Feb 2002 00:08:06 
 Заголовок ответа   Andrew Hapanovich   12 Feb 2002 11:06:45 
 Re: Заголовок ответа   Stas Vlasov   13 Feb 2002 21:45:13 
 Re: Заголовок ответа   Igor Okunev   14 Feb 2002 22:44:47 
 Re: Заголовок ответа   Stas Vlasov   15 Feb 2002 22:41:44 
 Re: Заголовок ответа   Oleg Shumsky   26 Feb 2002 09:20:06 
 Re: Заголовок ответа   Igor Okunev   28 Feb 2002 04:11:40 
 Re: Заголовок ответа   Oleg Shumsky   28 Feb 2002 07:42:06 
 Hа: Заголовок ответа   Alexander V. Gaiduk   27 Feb 2002 13:05:21 
Архивное /ru.cgi.perl/22873c6ad24c.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional