• Страница 1 из 1
  • 1
Форум » Програмистам » Perl, CGI » Upload File (Загрузка файла на сервер средствами Perl)
Upload File (Загрузка файла на сервер средствами Perl)
otpmДата: Среда, 07.Янв.2009, 00:50 | Сообщение # 1
Admin
Сообщений: 554
« 3 »
Статус: :-(
Код программы:

#!/usr/bin/perl # используйте -T для CGI-скриптов
$SIG{ALRM} = sub { die "$0 timed out" }; # эти 2 строки не работают под
alarm 900; # Windows, но они необязательны
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 = param ('foto'); # имя файла и одноврем. handle
my $DIR = '/home/alex/pics' # не забудьте "chmod 777 pics"
my $JS = " // JavaScript-функция для пред-
// варительной проверки формы
function check (form)
{
if (form.elements['foto'].value.length < 4)// foto должно быть заполнено
{
alert ('A gde zhe foto?'); // показать JavaScript-окошко
form.elements['foto'].select (); // выделить текст в поле foto
form.elements['foto'].focus (); // и прыгнуть туда курсором
return false; // false запретит browser-у
} // отправлять данные к серверу
return true; // все OK - можно отправлять
}";
print header (-type => 'text/html; charset=koi8-r'),
start_html (-title => 'МИСС ИHТЕРHЕТ', # напечатать заголовок и $JS
-script => $JS);

# regex внизу проверяет, есть ли .gif или .jp(e)g в конце и кладет имя
# файла в $1
if ($foto !~ /([\w-]+ \. (?: gif | jpe?g ))$/ix) #только имя,путь выкидывается
{
print h1 ('Отправьте нам фото!'), #start_form работать не будет
start_multipart_form (-onsubmit => 'return check (this)'),
filefield (-name => 'foto'),
submit (-value => 'Go baby go!'), # напечатать форму с кнопкой
end_form; # напечатать
}
# Этот скрипт никому не мешает вводить мусор (например xxxx.gif) в поле foto,
# что приведет к созданию пустых файлов; если это Вас беспокоит, установите
# новую версию CGI.pm и прочтите
# http://stein.cshl.org/WWW/software/CGI/#upload
elsif (not sysopen FILE, "$DIR/$1", O_EXCL | O_CREAT | O_WRONLY, 0444)
{
print h1 ("Hе могу создать $DIR/$1: $!"); # ошибка или такой файл уже есть
}
# Портятся файлы при посылке? См. ниже!
else # все в порядке - файл создан
{
binmode FILE; # включить binmode для Windows
print FILE while (<$foto>); # и скопировать данные в файл
close FILE;
print h1 ('Сердечное Вам спасибо!'); # воспитывать как собак Павлова
}
print end_html; # напечатать

Если закачка некоторых файлов происходит с глюками - видимо, файл перекодируется на лету русским апачем.
Варианты решения:
1.запретите все перекодировки для скрипта, который разбирает FileUpload, например таким способом: CharsetDisable On и делайте перекодировку сами.
2.Используйте директиву CharsetRecodeMultipartForms, которая появилась в PL23, но при этом вам все равно придется перекодировать вручную текстовые части запросов. Для этого можно использовать Russian Apache API, доступное в других модулях или Russian Apache Perl API, доступное из mod_perl.


Заработок для веб-мастеров
 
gennadrДата: Четверг, 25.Май.2017, 05:20 | Сообщение # 2
Рядовой
Сообщений: 10
« 0 »
Статус: :-(
++++ ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ! +++++

ВАМ НУЖЕН АНОНИМНЫЙ ВЗЛОМ ПОЧТЫ?
ВЫ ХОТИТЕ ЧТОБЫ ХОЗЯИН ПОЧТЫ НИ О ЧЕМ НЕ УЗНАЛ?
ВАМ НУЖНЫ КАЧЕСТВЕННЫЕ ДОКАЗАТЕЛЬСТВА ВЗЛОМА ПОЧТЫ?
ВЫ СОМНЕВАЕТЕСЬ ЗАКАЗЫВАТЬ У КОГО ТО?


МЫ ВАМ ПОМОЖЕМ!
ЧТО МЫ ПРЕДЛАГАЕМ:

  • ВЗЛОМ ПОЧТЫ БЕЗ ПРЕДОПЛАТЫ, ОПЛАТА ТОЛЬКО ПО ФАКТУ

  •  ВЗЛОМ ПОЧТЫ БЕЗ ИЗМЕНЕНИЯ ПАРОЛЯ, ЖЕРТВА НИЧЕГО НЕ УЗНАЕТ

  •  МЫ ПРЕДОСТАВИМ ЛЮБЫЕ ДОКАЗАТЕЛЬСТВА КАКИЕ ПОПРОСИТЕ

  •  МЫ ЛОМАЕМ АНОНИМНО, НИ КАКИХ ВАШИХ ДАННЫХ НЕ НУЖНО

  •  МЫ БЕРЕМСЯ ЗА РАБОТУ СРАЗУ КАК ТОЛЬКО ПОЛУЧАЕМ ЗАКАЗ, НЕ НУЖНО ЖДАТЬ ПОДТВЕРЖДЕНИЯ

  •  ОПЛАТИТЬ МОЖНО НЕ ИМЕЯ КОШЕЛЬКА \СЧЕТА

  • КОНСУЛЬТИРОВАНИЕ СВОИХ КЛИЕНТОВ ПОСЛЕ ВЫПОЛНЕННОГО ЗАКАЗА

  • ПОМОГАЮ С БЕЗОПАСНОСТЬЮ ПРИ ПРОСМОТРЕ ЧУЖИХ ПОЧТОВЫХ ЯЩИКОВ

    Код
    Mail.ru
    Yandex.ru
    Rambler.ru
    Gmail.com
    Корпоративные почтовые ящики тоже ломаем.


    НАШИ КОНТАКТЫ
    САЙТ: WWW.POCHTY.COM
    ICQ: 318-319

    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
    =
  •  
    Форум » Програмистам » Perl, CGI » Upload File (Загрузка файла на сервер средствами Perl)
    • Страница 1 из 1
    • 1
    Поиск:

    Счетчик тИЦ и PR