Rails 3 send_file - 0 байт - PullRequest
       2

Rails 3 send_file - 0 байт

2 голосов
/ 22 февраля 2011

У меня есть следующий код rails

send_file '/test.pdf'

Файл загружается с 0 байтами, у кого-нибудь есть идеи, как это исправить?

спасибо

1 Ответ

5 голосов
/ 22 февраля 2011

Я считаю, что send_file зависит от поддержки вашего веб-сервера для работы. Вы запускаете свое приложение, используя рельсы, встроенные в сервер? Если это так, я думаю, вы увидите, какое у вас здесь поведение.

По сути, идея send_file заключается в том, что он устанавливает HTTP-заголовок «X-Sendfile», указывающий на файл, который вы хотите отправить. Веб-сервер видит этот заголовок и вместо того, чтобы возвращать тело вашего ответа, вместо этого отправляет указанный файл.

Преимущество этого подхода заключается в том, что ваш средний веб-сервер высоко оптимизирован для очень быстрой отправки содержимого статических файлов и обычно выполняет работу во много раз быстрее, чем сама система rails.

Итак, решения вашей проблемы: * Используйте веб-сервер, который поддерживает X-Sendfile (например, Apache), или * Как прокомментировал rubyprince, вместо этого используйте send_data, что заставит ruby ​​выполнять тяжелую работу.

Кроме того, вы должны быть в состоянии подтвердить, что это то, что происходит, посмотрев на заголовки ответов, используя инструменты разработчика Firebug или Safari / Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...