带Gaufrette的Symfony音频流

时间:2014-04-23 15:55:46

标签: symfony gaufrette

我正在使用KnpGaufretteBundle来存储音频文件。我能够像下面这样将一个给定的文件下载到客户端:

    $filename = "Somefilename.mp3";

    $fs = $this->filesystemMap->get('media_fs');
    $file = $fs->read($filename);

    if($file){
        //Create And Return Response
        $response = new Response();

        $disp = $response->headers->makeDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT, 
            $variant->getFileName()
        );

        $response->headers->set('Content-Length', $fs->size($filename));
        $response->headers->set('Accept-Ranges', 'bytes');
        $response->headers->set('Content-Transfer-Encoding', 'binary');
        $response->headers->set('Content-Type', 'application/octet-stream');
        $response->headers->set('Content-Disposition', $disp);
        $response->setContent($file);

        return $response;
    }

但是现在我还想将文件流式传输到客户端,而不是使用附件内容配置。基本上我想访问它客户端,就好像我指着我的服务器上的实际mp3。有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:5)

我通过使用streamwrapper解决了这个问题......这很容易。

$filepath = 'gaufrette://myFileSystemName/'.$filename;

$response = new \Symfony\Component\HttpFoundation\BinaryFileResponse($filepath);