1

私はcakephp 2.xiを使用していますオーディオを再生し、ブラウザで画像を開きたい....

私の「ビュー」には、ファイル名を正しく表示し、ダウンロードリンクを表示し、ファイルが正常にダウンロードされている次のコードがあります

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

今、私はこのオーディオファイルも再生したい..ページに2つのリックがあるので、最初はダウンロードで、もう1つは表示または再生です

私のコントローラーには、ファイルをダウンロードしている次のコードがあります

      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 を介したファイルの提供は、次のような 1 つの関数で実行できます。

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>

比較的新しいタグであるため、サポートは普遍的ではありません。このタグをサポートしていないブラウザーを処理する方法の詳細については、サポートに関する詳細な記事またはその他のリソースを参照してください。

または、存在する多くのフラッシュ ベースのメディア プレーヤーのいずれかを使用します。

于 2013-07-19T09:07:22.043 に答える