CakePHP MediaView不工作

CakePHP MediaView不工作,php,cakephp,Php,Cakephp,我的站点从另一个站点下载一个文件,然后将该文件发送到客户端,但它不会发送该文件 //Downloads file from veeva to server public function get_veeva($id = null) { $this->autoRender = false; $asset = $this->Asset->findById($id); $vault = $asset['VeevaVault']; App::impo

我的站点从另一个站点下载一个文件,然后将该文件发送到客户端,但它不会发送该文件

//Downloads file from veeva to server
public function get_veeva($id = null)
{
    $this->autoRender = false;

    $asset = $this->Asset->findById($id);
    $vault = $asset['VeevaVault'];

    App::import('Vendor', 'phpVeeva', array('file' => 'veeva' . DS . 'veeva.php'));
    $veeva = new phpVeeva();

    $file = $veeva->getVeevaAsset($vault['veeva_id'], $vault['title']);
    $this->send_veeva($file);
}

//Sends downloaded file to client
public function send_veeva($file)
{
    $filename = $file['filename'];
    $ext = $file['ext'];
    $path = APP . 'tmp/';

    if (file_exists($path . $filename . '.' . $ext)) {
        echo 'Downloading ' . $filename . '.' . $ext . '...';
                //echos /var/www/<sitename>/app/tmp/<filename>.<ext>

        $this->viewClass = 'Media';
        $params = array(
            'id' => sprintf("%s.%s", $filename, $ext),
            'name' => sprintf("%s.%s", $filename, $ext),
            'download' => true,
            'ext' => $ext,
                             'mimeType' => array(
                                   'doc' => 'application/msword',
                                   'pdf' => 'application/pdf',
                                   'ppt' => 'application/vnd.ms-powerpoint'
                                 ),
            'path' => APP . "tmp" . DS
        );
        $this->set($params);
    }
    else {
        echo $filename . '.' . $ext . ' does not exist at ' . $path;
    }
}
文件存在于它应该存在的地方,页面回显说它正在下载,但没有弹出下载窗口。我试过使用和不使用mimeType,结果都一样。我的Cake版本不支持使用Cake响应发送文件

编辑-添加HTTP头

查看标题,会弹出以下内容:

在响应头中,当我尝试发送.doc文件时,内容长度为0,内容类型为text/html,所以我认为应该是application/msword

在请求头中,接受以下内容:text/html、application/xhtml+xml、application/xml

以下是标题:

答复:

HTTP/1.1200ok

日期:2014年2月20日星期四格林尼治标准时间16:32:26

服务器:Apache/2.2.15 Red Hat

X-Powered-By:PHP/5.3.3

内容长度:0

连接:关闭

内容类型:text/html;字符集=UTF-8

请求:

GET/assets/GET_veeva/530566d7-80c4-4ad7-b815-20600a64cb32 HTTP/1.1

主持人:guru-dev.selfip.com

用户代理:Mozilla/5.0 Windows NT 6.1;WOW64;rv:27.0 Gecko/20100101 Firefox/27.0

接受:text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8

接受语言:en-US,en;q=0.5

接受编码:gzip,deflate

推荐人:

Cookie:toolbarDisplay=hide;CAKEPHP=EDH8RIUMS2KB61KA4DIH3V6C1


连接:保持活动状态

我想这是您的控制器。在控制器中使用echo打破了MVC模式。在这种情况下,PHP会将http标头内容类型text/html发送到浏览器,以显示您的下载。。。消息这些标头只能发送一次。浏览器假定处理文本,而不是文件


删除回音并确保您的视图正在为您的文件发送适当的标题。

有人有什么想法吗?看起来它没有发送正确的http头。