Автор Тема: Закачка файла!!!!  (Прочитано 3140 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mackros

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
Закачка файла!!!!
« : 10 Марта 2001, 13:51:57 »
Народ есть скрипт...

#!/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 (\'Сердечное Вам спасибо!\');   # воспитывать как собак Павлова
}
open (F2,">>st.txt");
      print F2 "11
";
close (F2);
print end_html;    # напечатать

вопрос:
1. как сделать чтобы закачка файла максимально была не 128 КВ а допустим 512???
я пробовал в строке  
$CGI::POST_MAX = 131072;# максимальный ввод = 128 KB
поставить 524288 т.е. 512 КВ.
неполучаеться...
2. сделал форму и при отпраки файла вываливаеться сообщение об ошибке в этой CGI-ке типа:
строка: 4
знак: 47
Ошибка: Не допустимый символ
Код: 0
Адрес....
я пробовал удалять строку совсем но ошибка остаеться ошибкой...
причем таже самая... (хоть строки уже нет)!!!
и потом переваливаемся в JS функцию с которой уже отправляем...
НО и тут ошибку выкидывает типа:
стока: 17
знак: 1
Ошибка: предпологаеться наличие обекта
Код: 0
Адрес...
я жму продолжить и файл после этого успешно закачиваеться на сервер...

Буду благодарен если кто чем помогнет с этими бедами...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28