ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Отдать файл из собственного обработчика
  • From: "Sergey S." <neavirc@xxxxxxxxx>
  • Date: Fri, 4 Apr 2008 03:55:47 -0700
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; bh=YHtnSjAJTTgcdj0ZdW6Wqf41/9Hq8RJbIJ0sAC7uX9k=; b=s2gofkPTjdl/ap4BbaON64IaYB7M8B+W+wRzxIodwCwfYiCUrq6SsNhd/v+XDFRu4oGkkaG5FQkIJzBgQjtP/A7GygZarwsQlf66iZ/jlinilnUf6ZKQ6gmROEoXwcFGhqE79WEpFTQ091WiHyZZvV8mu4Dxtt5qNFzIDLZ5BvQ=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=N/q1XEqynyFGhnjDDJ97BJwEbOhmgwC5KhPrmF5IiVuzj32hbnfLSaZnYxlgF2ODr6MRRl84hgb1PCye3EL91ogCzaVyNjU5PtkztycTYOYt8m4J7u+fVkBs6taEbb6iXDfaRMFTiUECSNxCUvAXccWcxmSKBx3BTSpVHUeOGh8=
  • In-reply-to: <5e693d1f0804030746o4df3aa31o7b8dfc2d924af3d9@xxxxxxxxxxxxxx>
  • References: <5e693d1f0804030746o4df3aa31o7b8dfc2d924af3d9@xxxxxxxxxxxxxx>

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

Пытаюсь отдать файл из своего обработчика, но, вероятно, что-то делаю неправильно; от сервера приходит только

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 = "" *)"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);
/////////////////////////////////////////////////////

--
С уважением,
Сергей Самохин.



 




Copyright © Lexa Software, 1996-2009.