首页 文章

在浏览器cakephp中播放媒体文件或打开图像

提问于
浏览
1

我正在使用cakephp 2.x我想在浏览器中播放音频和打开图像....

在我的“视图”中,我有以下代码正确显示文件名,并显示下载链接,文件已成功下载

<?php  echo $this->Html->link('Download', array('controller' => 'bugshot', 'action' => 'download', $files['Audio']['filename']));?>

现在我想播放这个音频文件..我在页面上有两个舔,,,首先是下载,另一个是查看或播放

在我的控制器中,我有下面的代码正在下载文件

public function download($filename) {

    $idUser = $this->Auth->user('idUser');
    $folder_url = APP.'uploads/'.$idUser.'/'.$filename;
    $this->response->file($folder_url, array('download' => true, 'name' => $filename));

    return $this->response;
}

1 回答

  • 1

    下载和提供文件几乎相同

    通过Cake提供的文件可以通过以下类似的功能完成:

    public function download($filename) {
        $download = !empty($_GET['download']); // <- example
    
        $idUser = $this->Auth->user('idUser');
        $folder_url = APP.'uploads/'.$idUser.'/'.$filename;
        $this->response->file($folder_url, array('download' => $download, 'name' => $filename));
        return $this->response;
    }
    

    这样请求url /.../this-file.mp3 将提供文件,而url /.../this-file.mp3?dowload=1 将下载它 .

    Audio是一个html5标签

    提供音频的最简单方法是使用audio tag

    <?php
        $url = Router::url(array('controller' => 'x', 'action' => 'download', $name));
        $download = Router::url(array('controller' => 'x', 'action' => 'download', $name, '?' => array('download' => 1)));
    ?>
    <audio src="<?= $url; ?>" controls>
    <!-- alternate content for unsupported case -->
    Download <a href="<?= $download ?>">Download it</a>;
    </audio>
    

    作为一个相对较新的标记,支持不是通用的 - 请参阅Detailed article on support或其他资源,以获取有关如何处理不支持此标记的浏览器的更多信息 .

    或者,使用存在的众多基于闪存的媒体播放器之一 .

相关问题