Symfony访问web目录之外的mp3文件以在浏览器中播放

时间:2015-07-09 01:39:05

标签: php ajax symfony audio

如何在app / Resources / userFiles / mp3s目录中访问mp3?在我的控制器内部,我渲染了一个包含[audio]标签的视图,但我需要访问位于web目录之外的mp3文件。

  1. 进行ajax调用以请求mp3文件(完成)。

  2. 在我的控制器中,我想抓住该目录中的mp3,例如:

    $track = "file.mp3";
    $fileLocation = $this->get('kernel')->getRootDir().'/Resources/userFiles/mp3s/'.$track;
    
  3. 然后将该mp3传递给具有[audio]标签的模板。

    $trackHtml = $this->renderView('MyBundle:Public:track.html.twig', array(
        'id'=>$request->request->get("id"),
        'fileLocation'=>$fileLocation,
    ));
    
  4. 然后通过ajax发回响应,以便用户可以听到已在[audio]标签(已完成)中设置的页面上的音频。

    $data = array(
       "track"=>$trackHtml,
    );
    return new JsonResponse($data);
    
  5. Bottomline,我不知道如何访问该mp3以公开显示它。

    is_file($fileLocation = $this->get('kernel')->getRootDir().'/Resources/userFiles/mp3s/'.$track) is TRUE, 
    

    我不能公开这个文件。

    感谢。

1 个答案:

答案 0 :(得分:0)

您无法从网络访问app/Resources。此文件夹主要用于覆盖模板和存储资产(js和css文件)。根据最新的symfony2最佳实践(Web Assets),甚至资产也应该存储在web目录中。

  1. 您可以将网络目录中的符号链接设为app/Resources/mp3
  2. 完全将其移至网络下。
  3. 使用自定义操作将文件内容输出到浏览器。