1

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

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

 <?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;
}
4

1 回答 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将下载它。

音频是一个 html5 标签

提供音频的最简单方法是只使用音频标签

<?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>

作为一个相对较新的标签,支持并不是普遍的 -有关如何处理不支持此标签的浏览器的更多信息,请参阅有关支持或其他资源的详细文章。

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

于 2013-07-19T09:07:22.043 回答