Сервер отправляет изображение в качестве ответа и переименовывает его перед подачей — Symfony 2

#php #symfony #http-headers #symfony-2.3

#php #symfony #http-заголовки #symfony-2.3

Вопрос:

Я хочу использовать изображение в качестве ответа в Symfony 2.3.16

Итак, я делаю это в своем действии:

 $image = $this->getDoctrine()->getRepository('MakoBackendBundle:Image')->find($id); 

if($image !== null) {                                                               
    /** @var $image Image */                                                        
    $info = getimagesize($image->getAbsolutePath());                                
    $content = file_get_contents($image->getAbsolutePath());                        

    return new Response($content, 200, array(                                       
        'Content-Type' => $info['mime'],                                            
        'Content-Length' => strlen($content),                                       
        'Content-Disposition' => 'attachment;'                                      
    ));                                                                             
}                                                                                   

return new Response();  
  

Мой вопрос в том, как я могу использовать это изображение с другим именем, например, хэш на основе времени или что-то в этом роде? Я хочу подавать его с другим именем, чем оно хранится на стороне сервера.

Ответ №1:

У Symfony2 есть помощник для этого. Это из документации.

 use SymfonyComponentHttpFoundationResponseHeaderBag;

$d = $response->headers->makeDisposition(
    ResponseHeaderBag::DISPOSITION_ATTACHMENT,   // disposition
    'foo.pdf'                                    // filename
);

$response->headers->set('Content-Disposition', $d);