[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / PERL /

Upload File

Upload File

code:

#!/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.

<!-- SIGNATURE -->

<!-- SIGNATURE -->




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / PERL /

CGI интерфейс
24-10-2009   

Большое количество World Wide Web приложений основано на использовании внешних программ, управляемых Web сервером... подробнее

Кол. просмотров: общее - 4224 сегодня - 0

Upload File
24-10-2009   
Кол. просмотров: общее - 3323 сегодня - 0

Программирование для Веб: Загрузка файлов на сервер и посылка e-mail с вложениями
24-10-2009   

Одним из популярнейших вопросов во всевозможных форумах является вопрос «Как загрузить файл на сервер?». А ведь на самом деле это не так сложно, как кажется на первый взгляд. И чтобы не было совсем легко – пусть скрипт, который приведен ниже еще и посылает этот файл по почте, в виде вложения... подробнее

Кол. просмотров: общее - 3587 сегодня - 0

Защита WWW-сценариев от несанкционированного копирования и модификации
24-10-2009   

В статье рассматривается один из основных подходов к генерации динамического контента в среде веб-приложений, а именно использование веб-сценариев и CGI, и применительно к ним, методы защиты исходных текстов от несанкционированного копирования и модификации... подробнее

Кол. просмотров: общее - 3371 сегодня - 0

Как защитить мою программу, чтобы никто не смог её прочитать?
20-10-2009   

Disclaimer: все приведённые примеры предназначены для демонстрации принципов, а вовсе не являются готовыми к использованию решениями... подробнее

Кол. просмотров: общее - 3381 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects