Forum Webscript.Ru

Программирование => Perl => Тема начата: Realtor from Moscow от 22 Июля 2001, 23:50:35

Название: Upload файлов ???
Отправлено: Realtor from Moscow от 22 Июля 2001, 23:50:35
Почему Apache не хочет заливать файлы из формы ???
Вроде делаю все правильно:

Далее в скрипте сам разбираю CGI-заголовок. И нечего ???
Может надо чего в Апачи поменять. На одном форуме нашел совет поставить в локальном .htaccess директиву CharsetRecodeMultipartForms Off. Но в документации на Апач такой директивы нет. И скрипт сразу дает 500 ответ.
Чего делать ??? (Apache 1.3.6)
Название: Upload файлов ???
Отправлено: lodevar от 23 Июля 2001, 10:45:38
Ты лучше скажи как скрипт их принимает? (код)
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 23 Июля 2001, 17:39:58
2Lodevar: Ну право, не уместный вопрос. Но для примера приведу полный текст одного из скриптов.

#!/usr/bin/perl
# загрузка файла аренды
require "../my_html_lib.pl";      # настроечные данные
require "arenda_cfg.pl";

$datafile="arenda.dat";
$datadir=".";
&html_begin;
if ($ENV{\'REQUEST_METHOD\'} eq \'GET\') {$query=$ENV{\'QUERY_STRING\'};}
else {sysread(STDIN,$query,$ENV{\'CONTENT_LENGTH\'});}
if ($query eq \'\') {
print<
Загрузка файла данных аренды
Загрузка файла данных аренды





Файл



ENDHTML
;
} # end form

else {
   if ($ENV{\'CONTENT_TYPE\'} =~/multipart/) {
   ($bound)=($ENV{\'CONTENT_TYPE\'} =~/boundary=(\\S+)/);
   @parts=split (/
--$bound(-)*/,$query);
   @parts=grep($_ ne \'\',@parts);
   foreach (@parts) {
      ($header, $body)=split(/
\\s*
/,$_,2);
      ($name)=(/name=\\"([^\\"]*)\\"/);
      ($filename)=(/filename=\\"([^\\"]*)\\"/);
   if ($name eq \'userdata\') {$userdata=$body; $userdatafilename=$filename} # end if
      } # end foreach
   } #end if
# загрузка
open (F, ">$datadir/$datafile");
binmode F;
print F $userdata;
close(F);
print<
Загрузка файла данных аренды
Загрузка файла данных аренды прошла нормально!

Вернуться к администрированию аренды

ENDHTML
;
} # end else
Название: Upload файлов ???
Отправлено: AliMamed от 23 Июля 2001, 18:23:13


а action= ???
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 23 Июля 2001, 23:53:26
Эх Ali ;-)
Скрипт же сам себя вызывает 8-)
Название: Upload файлов ???
Отправлено: lodevar от 24 Июля 2001, 09:51:21
Цитировать
Realtor from Moscow (23-07-2001 17:39):
2Lodevar: Ну право, не уместный вопрос. Но для примера приведу полный текст одного из скриптов.
Я, конечно, очень рад, что вы привели листинг примера один к одному из книги "CGI-программирование. Учебный курс", написанную господином Павловым А. стр.105-107. (или может вы цитировали того, кто оттуда списал :-))
Но вопрос мой был в том, как скрипт принимает данные из формы, а так же из чего вы поняли, что "что-то не работает".
Кстати, там на 107 странице все расписано давольно прилично.
Название: Upload файлов ???
Отправлено: AliMamed от 24 Июля 2001, 10:10:08
Цитировать
Realtor from Moscow (23-07-2001 23:53):
Эх Ali ;-)
Скрипт же сам себя вызывает 8-)

http://www.w3.org/TR/html4/interact/forms.html#h-17.3
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 24 Июля 2001, 23:58:40
Книга Павлова - моя любимая. Даже уже по швам расползлась.
Выше указанный скрипт у хостера работает, а у меня на компе нет!
Вот и интересуюсь, может в Apache чего поковырять.
На локальной машине: файл открывается и записывается байтов 500-800. Специально проверял: взял кучу готовых скриптов на CGI.ru и WebScript.ru. Ни один не заливает на локальной машине. Реакция одинаковая ???
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 01 Августа 2001, 23:35:47
Ну что ???
Я смотрю, что никто не знает ???
Название: Upload файлов ???
Отправлено: Chs от 02 Августа 2001, 10:22:18
Цитировать
Realtor from Moscow (01-08-2001 23:35):
Ну что ???
Я смотрю, что никто не знает ???

Не знает - проблема локальная, и решать ее Вам.:) У меня, например, на моей машине upload работает без проблем.
Скорее, IMHO, настройки Apache.:)
Название: Upload файлов ???
Отправлено: lodevar от 02 Августа 2001, 11:03:12
Цитировать
Chs (02-08-2001 10:22):
Скорее, IMHO, настройки Apache.:)

Вопрос-то как раз в этом и был! Какие настройки, конкретнее?!?!
Название: Upload файлов ???
Отправлено: Chs от 02 Августа 2001, 11:55:41
Цитировать
lodevar (02-08-2001 11:03):
Вопрос-то как раз в этом и был! Какие настройки, конкретнее?!?!

:)) Я знаю, что если Apache настроен в соответствии с много раз упоминаемым в суе http://userguide.webservis.ru/homeserver-apache-forprint.shtml все работает.
Отличия от работающей конфигурации может поискать у себя Realter, а потом всем сообщить.:))
Могу посмотреть так же на его конфигурацию Apache и сказать - работает она у меня или нет.:)
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 02 Августа 2001, 21:58:46
Как раз на вышеупоминаемой ссылке написано, как не надо настраивать Апач.
У меня все полностью копирует Unix. И что писать в httpd.conf и mime.types я знаю побольше.
Вопрос был по поводу того, что может есть что между строк, нигде не упоминаемое. А на webservis.ru начинающих отправляйте >(
Название: Upload файлов ???
Отправлено: от 02 Августа 2001, 22:18:37
По ссылке информация о настройке апача исключительно под Windows!
Название: Upload файлов ???
Отправлено: Chs от 02 Августа 2001, 22:40:43
Цитировать
Realtor from Moscow (02-08-2001 21:58):
У меня все полностью копирует Unix.

Как показывает Ваш же опыт не все.:)
Цитировать

А на webservis.ru начинающих отправляйте >(

Ну да, "круче нас только яйца" (с) не мой.
Если считаете себя продвинутым, то в состоянии разобраться сами.
Или присылайте httpd.conf - посмотрю.
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 02 Августа 2001, 22:45:54
2Chs: выслал
Название: Upload файлов ???
Отправлено: Chs от 02 Августа 2001, 23:08:11
Цитировать
Realtor from Moscow (02-08-2001 22:45):
2Chs: выслал

Это не Apache. C этой конфигурацией у меня все работает - upload проходит нормально.
Хотя... Может версию Apache поновее поставить (у меня 1.3.14)?
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 02 Августа 2001, 23:34:19
Слушай мысль ;-)
Хотя я специально поставил 1.3.6, как менее глючный.
А какой сейчас последний. У хостера стоит, кажется, 1.3.14
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 03 Августа 2001, 02:50:00
2Chs: скачал 1.3.20.
Как мнение? Можно ставить?
 8)
Название: Upload файлов ???
Отправлено: Chs от 03 Августа 2001, 07:35:06
Цитировать
Realtor from Moscow (03-08-2001 02:50):
2Chs: скачал 1.3.20.
Как мнение? Можно ставить?
 8)

Не знаю - не пробовал, наверное можно.:):))
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 03 Августа 2001, 05:28:18
А все же, в какой версии надо выставлять CharsetRecodeMultipartForms Off  в .htaccess ???
Узрел упоминание подобных проблем у А.Лебедева на http://www.parser.ru

И кстати, о "круче только ...". Я не крут. Просто у меня комп в полном доступе был с 86 года прошлого века. Я еще помню, что такое БЭСМ-6 (на водяном охлаждении) 8) В свое время учился в МЭИ на АВТФ (фак. автоматики и выч. техники). На Unix сидел с 88 года. Ну просто мне везло все время (типа как в 88 году попал в мои загребущие руки на 2 года ibm ps/2 model 50 и т.д.).
Я не говорю, что я крут. Просто глупость какая-то с заливкой файлов. Ну не идет ???
Щас это больше хобби, чем что либо. На жизнь зарабатываю юр. услугами. Хотя за июнь сайт принес 100 у.е.. Мало, а приятно. 10 ящиков пива, в пересчете (ну прям как в студенческие времена: 40 рэ стипендия - 4 ящика пива).  8-)
Название: Upload файлов ???
Отправлено: Chs от 03 Августа 2001, 07:31:32
Цитировать
Realtor from Moscow (03-08-2001 05:52):
А все же, в какой версии надо выставлять CharsetRecodeMultipartForms Off  в .htaccess ???

Это для русского апача, когда при upload файл создается такого же размера, но кривой - перекодированный.
Название: Upload файлов ???
Отправлено: zapimir от 06 Сентября 2001, 15:00:08
Попробуй поставить перед чтением STDIN binmode (STDIN);
Я столкнулся с такой проблемой при upload\\\'е картинок (на Win2k + Apache), переключение в binmode помогло
Название: Upload файлов ???
Отправлено: Ilya от 06 Сентября 2001, 15:14:06
О! У меня таже фигня была!
Попробуй этот код, на моей машине кроме него больше ни чё не аплоудит.

########## HTML #############

File 1:



File 2:





#############################

######## upload.cgi #########
#!/usr/bin/perl
# Куда загружать файл
$basedir = \\"f:\\\\\\";

# Позволить загружать все типы файлов?  yes/no (в нижнем регистре)
$allowall = \\"yes\\";

# Укажите файлы каких типов можно загружать на сервер.
# (Будет использываться если в предыдущем параметре указанно \\\'no\\\').
$theext = \\".gif\\";

# Страница на которую произойдет переход по окончании загрузки файла
$page = \\"page.html\\";



use CGI;
$onnum = 1;

while ($onnum != 11) {
my $req = new CGI;
my $file = $req->param(\\"FILE$onnum\\");
if ($file ne \\"\\") {
my $fileName = $file;
$fileName =~ s!^.*(\\\\\\\\|\\\\/)!!;
$newmain = $fileName;
if ($allowall ne \\"yes\\") {
if (lc(substr($newmain,length($newmain) - 4,4)) ne $theext){
$filenotgood = \\"yes\\";
}
}
if ($filenotgood ne \\"yes\\") {
open (OUTFILE, \\">$basedir/$fileName\\");
print \\"$basedir/$fileName
\\";
while (my $bytesread = read($file, my $buffer, 1024)) {
print OUTFILE $buffer;
}
close (OUTFILE);
}
}
$onnum++;
}

print \\"Location:$page\\\\n\\\\n\\";
##############################
Название: Upload файлов ???
Отправлено: Realtor from Moscow от 07 Сентября 2001, 00:21:16
Я уже забыл об этой теме. Спасибо Ilya. Сыплю пепел на свою голову и начинаю рвать бороду :P Забыл про буферизацию :( Сейчас сделаю :P
Название: Upload файлов ???
Отправлено: lodevar от 07 Сентября 2001, 09:28:22
Цитировать
Сыплю пепел на свою голову и начинаю рвать бороду :P

Смотри всю не вырви, а то при следующей встрече не узнаем. ;)