Re: Отдать файл из собственного обработчика

Sergey S. neavirc at gmail.com
Fri Apr 4 14:55:47 MSD 2008


Здравствуйте.

Пытаюсь отдать файл из своего обработчика, но, вероятно, что-то делаю
> неправильно; от сервера приходит только
>
> HTTP/1.x 200 OK
>
> Не подскажите куда копать?



Разобрался, нужно было вот  так:

/////////////////////////////////////////////////////
const char* path = "/home/sergey/img.gif";

struct stat file_info;
stat(path, &file_info);

r->headers_out.status = NGX_HTTP_OK;
r->headers_out.content_type.len = strlen("image/gif");
r->headers_out.content_type.data = (u_char *)"image/gif";
r->headers_out.content_length_n = file_info.st_size;
ngx_http_send_header(r);

ngx_buf_t *b = static_cast<ngx_buf_t*>(ngx_create_temp_buf(r->pool,
file_info.st_size));
ngx_file_t file;
file.fd = ngx_open_file(path, NGX_FILE_RDONLY, NGX_FILE_OPEN, 0);
ngx_read_file(&file, b->pos, file_info.st_size, 0);
ngx_close_file(file.fd);
b->last = b->pos + file_info.st_size;

b->memory = 1;
b->last_buf = 1;

ngx_chain_t out;
out.buf = b;
out.next = NULL;

return ngx_http_output_filter(r, &out);
/////////////////////////////////////////////////////

--
С уважением,
Сергей Самохин.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20080404/196a69ef/attachment.html>


More information about the nginx-ru mailing list