Re: Простой вопрос про встроенный perl и upload модули
Valery Kholodkov
valery+nginxru на grid.net.ru
Сб Окт 1 11:24:19 UTC 2011
Так происходит потому что модуль upload на данный не помещает результат преобразований тела запроса в один буфер.
----- Ivan <bdfy at mail.ru> wrote:
> Есть
>
> location @test {
> client_max_body_size 4G;
> default_type text/html;
> perl hello::handler;
> }
>
> location /test {
> client_max_body_size 4G;
> default_type text/html;
> perl hello::handler;
> }
>
>
> location /upload {
> upload_pass @test;
> upload_store /mnt;
> upload_pass_form_field "^submit$|^description$|^test$";
> upload_cleanup 400 404 499 500-505;
>
>
>
> модуль hello ( стандартный из примера ):
>
> package hello;
>
> use nginx;
>
> sub handler {
> my $r = shift;
>
> if ($r->request_method ne "POST") {
> return DECLINED;
> }
>
> if ($r->has_request_body(\&post)) {
> return OK;
> }
>
> return HTTP_BAD_REQUEST;
> }
>
> sub post {
> my $r = shift;
>
> $r->send_http_header;
>
> $r->print("request_body: \"", $r->request_body, "\"<br/>");
> $r->print("request_body_file: \"", $r->request_body_file, "\"<br/>\n");
>
> return OK;
> }
>
> 1;
>
> __END__
>
> и формочка: ( отправляется с пустым полем file)
> <html>
> <body>
> <form method="POST" enctype="multipart/form-data" action="/test" >
> <input type="file" name="file" value="value">
> <input type="hidden" name="test" value="value">
> <input type="submit" name="submit" value="Upload">
> </form>
> </body>
> </html>
>
>
> В случае если форма посылается через /test на экран выводится содержимое этой формы. т е все ОК. В случае если посылается /upload в переменной $r->request_body виден кусок вида "------------123121212" и все. Почему так происходит ?
--
Regards,
Valery Kholodkov
Подробная информация о списке рассылки nginx-ru