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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Michael Poliakov                     2:5020/400     10 Jan 2001  11:11:26
 To : All
 Subject : Re: Плиз ХЕЛП!
 -------------------------------------------------------------------------------- 
 
 On Tue, 09 Jan 2001 22:22:51 +0300, Andrey Kubakh
 <Andrey.Kubakh@p87.f7.n6003.z2.fidonet.org> wrote:
 
 >САБЖ! Ребят, нужен скрипт (желательно перловский), мэйл форма, с возможностью
 >аттача файла (1) не превышающего размер в 100 кб, и после отправки на E-Mail,
 
 ========== cut ==============
 
 >From alex@kawo2.rwth-aachen.de Tue Dec 14 03:24:10 1999
 
 Newsgroups: fido7.ru.cgi.perl
 Subject: Re: пересылка файлов?
 From: Alex Farber <alex@kawo2.rwth-aachen.de>
 Date: 14 Dec 1999 03:24:10 +0300
 --------
 Konstantin Ischenko wrote:
 
 > Как написать CGI скипт, чтобы была возможность пересылать
 > выбранного клиентским броузером файл на сервер? Hу чтото типа
 > того как работает mail.ru при посылке файлов?
 
  #!/usr/bin/perl -T                               # используйте -T для
 CGI-скриптов
 
  $SIG{ALRM} = sub { die "$0 timed out" };         # прекратить выполнение
 скрипта 
  alarm 900;                                       # в любом случае через 15
 минут
 
  use strict;                                      # никогда не забывайте эту
 строку
  use Fcntl;                                       # O_EXCL, O_CREAT и O_WRONLY
  use CGI       qw (:standard);                    # читайте "perldoc CGI"
  use CGI::Carp qw (fatalsToBrowser);              # вывод ошибок к browser-у 
 
  $CGI::POST_MAX = 131072;                         # макс. ввод = 128 KB
 
  my $foto;                                        # декларация переменной для
 strict
  my $DIR = '/home/alex/pics';                     # не забудьте "chmod 777 pics"
  my $JS  =<< 'JAVASCRIPT';                        # JavaScript для проверки
 формы
 
  function check (form)
  {
      if (form.elements['foto'].value.length < 4) // поле foto должно быть
 заполнено
      {
           alert ('A gde zhe foto?');
           form.elements['foto'].select ();
           form.elements['foto'].focus ();
           return false;                          // false запретит browser-у
      }                                           // отправлять данные к серверу
 
      return true;                                // все OK - можно отправлять
  }
 
  JAVASCRIPT
 
  print header (-type  => 'text/html; charset=koi8-r'),
        start_html (-title  => 'МИСС ИHТЕРHЕТ',    # напечатать заголовок и $JS
                    -script => $JS);
                                                   # 1й запуск скрипта - поэтому
  unless ($foto = param ('foto'))                  # напечатать multipart-форму
  {
      print start_multipart_form (-onsubmit => 'return check (this)'),
            h1 ('Отправьте нам фото спутницы Вашей жизни! '),
            filefield (-name => 'foto',
                       -size => 40),               # поле для upload-а файлов
            submit (-value => 'Go baby go!'),      # и кнопка для отправки формы
            end_form;
  }
  elsif (defined uploadInfo ($foto) and            # некоторые browser-ы не шлют
         uploadInfo ($foto) -> {'Content-Type'} ne 'image/gif' and
         uploadInfo ($foto) -> {'Content-Type'} ne 'image/jpeg')
  {
      print h1 ('Используйте формат GIF или JPG!');
  }
  elsif (-e "$DIR/$foto")                          # -e проверяет наличие файла
  {
      print h1 ('А такая у нас уже есть!');
  }
  else                                             # все в порядке - создать файл
  {
      die "Hе могу создать $DIR/$foto: $!"
          unless sysopen FILE, "$DIR/$foto", O_EXCL | O_CREAT | O_WRONLY, 0444;
 
      binmode FILE;                                # для Windows
      print FILE while (<$foto>);                  # скопировать принятые данные
 в файл
      close FILE;
      print h1 ('Ха-ха, спасибо!');
  }
 
  print end_html;                                  # напечатать </BODY></HTML>
 
 /Алекс
 
 --
 Собираю статьи про Perl, базы данных и т. п. на http://simplex.ru/news/
 Собираю адреса газет и журналов на http://www.friends-partners.org/lit/
 
 ========== cut ==============
 
 --- ifmail v.2.15dev5
  * Origin: Nizhniny Novgorod Information Networks (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 Плиз ХЕЛП!   Andrey Kubakh   09 Jan 2001 23:22:51 
 Re: Плиз ХЕЛП!   Michael Poliakov   10 Jan 2001 11:11:26 
Архивное /ru.cgi.perl/2080b673d98a.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional