duanou9739 2014-06-25 14:20
浏览 50
已采纳

服务器将图像作为响应发送,并在服务之前将其重命名 - Symfony 2

I want to serve a image as Response in Symfony 2.3.16

So I'm doing this in my action:

$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();  

My question is how can I serve this image with a different name, like a time based hash or something? I want to serve it with a different name than it is stored on the server-side.

  • 写回答

1条回答 默认 最新

  • dousi4148 2014-06-25 14:51
    关注

    Symfony2 has a helper for this. This is from the documentation.

    use Symfony\Component\HttpFoundation\ResponseHeaderBag;
    
    $d = $response->headers->makeDisposition(
        ResponseHeaderBag::DISPOSITION_ATTACHMENT,   // disposition
        'foo.pdf'                                    // filename
    );
    
    $response->headers->set('Content-Disposition', $d);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?