我正在使用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。有谁知道如何做到这一点?
答案 0 :(得分:5)
我通过使用streamwrapper解决了这个问题......这很容易。
$filepath = 'gaufrette://myFileSystemName/'.$filename;
$response = new \Symfony\Component\HttpFoundation\BinaryFileResponse($filepath);