Запутался совсем, необходимо написать модуль который бы отдавал файл и
делал инсерт в базу после того, как файл будет полностью отправлен. По
суте обычный счетчик. В конфиге написал:
location /files {
perl getfile::handler;
}
location /insert {
internal;
perl insfile::handler;
}
В getfile.pm следующее:
...
$r->allow_ranges;
$r->send_http_header;
$r->sendfile($fn);
$r->internal_redirect("/insert?sid=$sid");
return OK;
...
Проблема в том, что докачка не поддерживается
Для того, чтобы была докачка, у ответа должна быть длина:
$r->allow_ranges;
$r->header_out("Content-Length", -s $fn);
$r->send_http_header;
$r->sendfile($fn);
/insert вызывается
всякие раз когда запрос закончен, даже если файл не докачен полностью.
$r->sendfile и $r->internal_redirect начинают работать сразу после
того, как перл выполнил "return OK".
Пробовал вызывать /insert через post_action но не догадался как
передать нужный мне параметр.
Из перлого обработчика на данный момент нельзя поставить переменные nginx'а.
Игорь Сысоев
http://sysoev.ru