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

时间:2013-07-18 08:09:55

标签: cakephp file-upload cakephp-2.0 cakephp-2.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 个答案:

答案 0 :(得分: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;
}

请求网址/.../this-file.mp3的方式将提供该文件,而网址/.../this-file.mp3?dowload=1将下载该文件。

音频是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或其他资源,以获取有关如何处理不支持此标记的浏览器的更多信息。

或者,使用现有的众多基于闪存的媒体播放器之一。