使用CakePHP中的媒体视图下载文件

APZ*_*APZ 2 php cakephp

我想通过4个不同的链接下载4个不同的文件.我正在使用Media视图下载文件,但我必须在控制器的下载功能中对文件名进行硬编码:

function download () { 
    $this->view = 'Media'; 
    $params = array( 
          'id' => 'example.zip', 
          'name' => 'example', 
          'download' => true, 
          'extension' => 'zip', 
          'path' => APP . 'files' . DS 
   ); 
   $this->set($params); 
} 
Run Code Online (Sandbox Code Playgroud)

这适用于一个文件.现在,对于2,3,4号链接,我是否需要创建3个不同的操作并在其中提供不同的文件名,或者是否有一种方法可以使用download()仅根据链接下载相应的文件已被点击?

dec*_*eze 7

这就是变量的用途.通用示例:

function download($fileId) {
    $file = // find the file you want to serve based on $fileId
    $pathInfo = pathinfo($file['path']);

    $this->view = 'Media'; 
    $params = array( 
          'id'        => $file['name'],
          'name'      => $pathInfo['filename'], 
          'extension' => $pathInfo['extension'], 
          'download'  => true, 
          'path'      => APP . 'files' . DS 
   ); 
   $this->set($params); 
} 
Run Code Online (Sandbox Code Playgroud)