Автор | Сообщение |
|
| |
Пост N: 8
Зарегистрирован: 03.02.12
|
|
Отправлено: 10.02.12 11:08. Заголовок: Harbour CGI
Помогите разобраться. Пишу простое CGI приложение. Читаю переменные окружения, которые передает сервер приложению - getenv(). Вывожу результат в outstd(). Если форма запроса по "GET" ( getenv("REQUEST_METHOD")=="GET" ) то все переменные читаю из getenv("QUERY_STRING"). А если по "POST", как прочитать переданные переменные? Спасибо.
|
|
|
Ответов - 15
[только новые]
|
|
|
| постоянный участник
|
Пост N: 724
Зарегистрирован: 27.01.07
|
|
Отправлено: 10.02.12 11:41. Заголовок: Dazzler пишет: А ес..
Dazzler пишет: цитата: | А если по "POST", как прочитать переданные переменные? |
| Умные дядьки говорят, что через stdin, через клавиатуру типа... http://dayte2.com/get-post-methods
|
|
|
|
| |
Пост N: 9
Зарегистрирован: 03.02.12
|
|
Отправлено: 10.02.12 12:32. Заголовок: Как это сделать? Как..
Как это сделать? Какими функциями можно прочитать?
|
|
|
|
| постоянный участник
|
Пост N: 725
Зарегистрирован: 27.01.07
|
|
Отправлено: 10.02.12 14:08. Заголовок: Буфер клавиатуры чит..
Буфер клавиатуры читается функцией Inkey()
|
|
|
|
| |
Пост N: 10
Зарегистрирован: 03.02.12
|
|
Отправлено: 10.02.12 14:37. Заголовок: Понял как читается. ..
Понял как читается. fread() - возвращает данные. Главное чтобы первый параметр был 0 - ноль n_buff= fread(0,@buff,len(buff)) возвратила в buff строку, длинной n_buff Спасибо
|
|
|
|
| постоянный участник
|
Пост N: 726
Зарегистрирован: 27.01.07
|
|
Отправлено: 10.02.12 14:52. Заголовок: Ну да... Стандартные..
|
|
|
|
| |
Пост N: 11
Зарегистрирован: 03.02.12
|
|
Отправлено: 10.02.12 14:57. Заголовок: Я просто не знал как..
Я просто не знал как эти стандартные потоки можно было использовать.....
|
|
|
|
| постоянный участник
|
Пост N: 727
Зарегистрирован: 27.01.07
|
|
Отправлено: 10.02.12 15:15. Заголовок: Dazzler пишет: Я пр..
Dazzler пишет: цитата: | Я просто не знал как эти стандартные потоки можно было использовать. |
| Я тоже...
|
|
|
|
| |
Пост N: 8
Зарегистрирован: 09.11.06
|
|
Отправлено: 17.06.18 18:14. Заголовок: Не читает все данные из потока
Пробую передать файл на сервер, принимающий скрипт на сервере: function main() LOCAL nLen, cTemp, nRead OUTSTD("Content-type: text/html" + hb_eol() + hb_eol()) IF "POST" $ UPPER( hb_GetEnv( "REQUEST_METHOD" ) ) nLen := VAL(hb_getenv("CONTENT_LENGTH")) cTemp := SPACE( nLen ) IF ( nRead := FRead( 0, @cTemp, nLen )) != nLen OUTSTD("<p>Post error read " + hb_ntos( nRead ) + " instead of " + hb_ntos( nLen ) + hb_eol() ) ELSE OUTSTD("<p>Post string is: " , cTemp + hb_eol()) ENDIF ENDIF OUTSTD("</body></html>" + hb_eol()) RETURN NIL Но из stdin почему-то читается ~70кб и все, т.е. если передавать больше, то получаю к примеру: Post error read 71443 instead of 103746 Может кто подскажет куда копать.
|
|
|
|
| постоянный участник
|
Пост N: 5918
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.06.18 20:24. Заголовок: Gosha пишет: Пробую..
Gosha пишет: цитата: | Пробую передать файл на сервер, принимающий скрипт на сервере: |
| Это как ? Более подробней можно написать ?
|
|
|
|
| постоянный участник
|
Пост N: 1439
Зарегистрирован: 27.01.07
|
|
Отправлено: 17.06.18 20:40. Заголовок: Andrey пишет: Это к..
|
|
|
|
| |
Пост N: 9
Зарегистрирован: 09.11.06
|
|
Отправлено: 17.06.18 22:04. Заголовок: Имеется html: <..
Имеется html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>File Upload</title> </head> <body> <form action="/cgi-bin/upload_file.exe" method="post" enctype="multipart/form-data"> <p>Photo to Upload: <input type="file" name="photo" /></p> <p><input type="submit" name="Submit" value="Submit Form" /></p> </form> </body> </html> Выбираем файл, загружаем на сервер методом POST. Скрипт на стороне сервера из stdin читает содержимое. Если файл небольшой то все ОК, а если большой то из stdin читается только 70кб. При использовании TIPCgi - та же ерунда получается.
|
|
|
|
|
| постоянный участник
|
Пост N: 1440
Зарегистрирован: 27.01.07
|
|
Отправлено: 18.06.18 06:21. Заголовок: Gosha пишет: При ис..
Gosha пишет: цитата: | При использовании TIPCgi - та же ерунда получается |
| Так может дело в настройках сервера?
|
|
|
|
| |
Пост N: 10
Зарегистрирован: 09.11.06
|
|
Отправлено: 18.06.18 08:36. Заголовок: PSP пишет: Так може..
PSP пишет: цитата: | Так может дело в настройках сервера? |
| В начале тоже так подумал, но скрипт на Perl отрабатывает нормально. Хочу еще уточнить: переменная cTemp на выходе имеет длину нормальную, равную "CONTENT_LENGTH", но вот ее содержимое заполнено данными только первые 70кб, переменная nRead также равна 70кб.
|
|
|
|
| Администратор
|
Пост N: 3741
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.06.18 09:05. Заголовок: Чтение из stdin выпо..
Чтение из stdin выполняется с помощью winapi-функции ReadFile. Возможно, там есть какие-то особенности или ограничения, например, реакция на символ eof. Попробуйте опростить FError/DosError, может быть там что-то будет. Кстати, попробуйте выдавать fread в цикле, пока прочитанная длина строки не равна нулю, с конкатенацией прочитанных строк.
|
|
|
|
| |
Пост N: 11
Зарегистрирован: 09.11.06
|
|
Отправлено: 19.06.18 10:05. Заголовок: Pasha пишет: Кстати..
Pasha пишет: цитата: | Кстати, попробуйте выдавать fread в цикле, пока прочитанная длина строки не равна нулю, с конкатенацией прочитанных строк. |
| Да, помогло, последовательное чтение 1кб блоками. Странно однако. Благодарю.
|
|
|
|