Xpoint
   [напомнить пароль]

Передать большой текст

Метки: [без меток]
2007-06-30 12:12:15 [обр] Igor V[досье]
Добрый день.
Надеюсь выбрал подходящий форум:
Пытаюсь передать <FORM...><textarea> текст большой длинны(около 20Кб) на perl скрипт.
Скрипт принимает POST, но получает только около 3500 первых байт.
Сколько не парился - не могу найти почему. Пробовал разные броузеры, - эффект тот же.
Поможите пожалуйста!
спустя 2 часа 3 минуты [обр] Алексей Севрюков(0/1280)[досье]
Igor V[досье]
  1. минимальный пример нерабочего кода (и скрипт и HTML)?
  2. на каком языке скрипт?
  3. какой веб-сервер стоит?
спустя 7 минут [обр] Igor V[досье]

Алексей Севрюков[досье]:

  1. В том-то и дело, что вроде бы все работает, POST выполняется, данные принимаются, но почему-то не все.
  2. скрипт на Perl. В скрпипте проблем быть не может, я ради теста жестко выводил на печать полученные при POST запросе данные(даже не раскодируя) - их меньше, чем отправляется.
  3. Сервер Apache/2.0.51 (Fedora).

Может проблема с клиентом? Но пробовал разные броузеры - одно и то же кол-во данных доходит, а остальное как-то бесследно пропадает.

спустя 2 часа 27 минут [обр] Алексей Севрюков(0/1280)[досье]
Igor V[досье]
  1. Ну вот откуда у людей такая уверенность что в скрипте проблемы быть не может? Делали тест на три строчки без библиотек и всего остального?
спустя 11 минут [обр] Igor V[досье]

Ну не совсем на 3:)
Вот скрипт:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
if($ENV{'REQUEST_METHOD'} eq 'POST'){
   sysread(STDIN,$queryr,$ENV{'CONTENT_LENGTH'});
   print $queryr;
}

Без этого теста я и спрашивать не стал бы.

спустя 3 часа 6 минут [обр] Igor V[досье]
Еще интересный момент: независимо от "количества" передаваемых данных они обрезаются до подозрительно ровного числа - 4000 символов.
Подозрения на клиент. Может винда? Кто-нибудь сталкивался с подобной проблемой?
спустя 49 минут [обр] Alexander O(0/460)[досье]
Igor V[досье] дело в скрипте — sysread не обязан читать за раз столько байт, сколько указано третьим параметром. Его нужно вызвыать пока не вернет 0 или пока прочитанный объем не превысит Content-length
спустя 1 день 18 часов [обр] Igor V[досье]
Огромное спасибо!
Решилось через while sysread(...) > 0
спустя 4 часа 56 минут [обр] Алексей Севрюков(0/1280)[досье]
Igor V[досье] А Вы говорите не в скрипте ) Вот оно как бывает.
Powered by POEM™ Engine Copyright © 2002-2005