Как мне следует построить объект Response, чтобы обслуживать изображения / вложения из БД в Symfony2? - PullRequest
2 голосов
/ 15 октября 2011

Symfony2 абстрагирует объекты Request и Response, как мне создать объект Response, чтобы обслуживать вложения клиентских файлов и изображения для отображения в браузере?

Ответы [ 3 ]

10 голосов
/ 29 ноября 2011

Вы можете просто использовать объект Response:

use Symfony\Component\HttpFoundation\Response;

И установите в нем Content-Type следующим образом:

return new Response($image, 200, array('Content-Type' => 'image/png'));
2 голосов
/ 17 октября 2011

Другим решением может быть это , поскольку изображение не является одним из поддерживаемых форматов symfony2 для объекта запроса.

Также:

static protected function initializeFormats()
{
    static::$formats = array(
        'html' => array('text/html', 'application/xhtml+xml'),
        'txt'  => array('text/plain'),
        'js'   => array('application/javascript', 'application/x-javascript', 'text/javascript'),
        'css'  => array('text/css'),
        'json' => array('application/json', 'application/x-json'),
        'xml'  => array('text/xml', 'application/xml', 'application/x-xml'),
        'rdf'  => array('application/rdf+xml'),
        'atom' => array('application/atom+xml'),
        'rss'  => array('application/rss+xml'),
    );
}

по умолчанию является объектом запроса Symfony.доступные форматы.Можете зарегистрироваться здесь .

Удачи!

2 голосов
/ 15 октября 2011

Вы можете использовать IgorwFileServeBundle , который позволяет вам сломать абстракцию ответа, чтобы повысить производительность.Если вы используете nginx, вы также можете воспользоваться его XSendfile функционалом.

Примечание: Lighttpd и Apache имеют альтернативную реализацию XSendfile с некоторыми отличиями и пока не поддерживаются.Запросы на извлечение приветствуются.

...