|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/2080b673d98a.html, оценка из 5, голосов 10
|