2014-04-23 12 views
5

Używam KnpGaufretteBundle do przechowywania plików audio. Jestem w stanie pobrać dany plik do klienta tak:Strumień audio Symfony z Gaufrette

$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; 
    } 

Ale teraz chcę też strumieniowo plik do klienta, zamiast używania dyspozycję zawartość załącznika. Zasadniczo chcę uzyskać dostęp do tego klienta, tak jakbym wskazywał na rzeczywisty mp3 siedzący na moim serwerze. Czy ktoś wie, jak można to zrobić?

Odpowiedz

5

Rozwiązałem to, używając streamwrapper ... to było takie proste.

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

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