我的網站從另一個網站下載文件,然後將該文件發送到客戶端,但它不發送它。CakePHP MediaView不工作
//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頭
望着頭,下面的事情蹦出:
在響應頭,內容長度爲0,內容類型是text/html的時候,我試圖發送.doc文件,所以我認爲它應該是應用程序/ msword。
在請求標頭中,接受以下內容:text/html,application/xhtml + xml,application/xml。
這裏是頭:
響應:
HTTP/1.1 200 OK
日期:週四,2014年2月20日16時32分26秒GMT
服務器:Apache/2.2 0.15(紅帽)
X-已啓動通過:PHP/5.3.3
Conten t-Length:0
Connection:close
Content-Type:text/html;字符集= UTF-8
請求:
GET /資產/ get_veeva/530566d7-80c4-4ad7-b815-20600a64cb32 HTTP/1.1
主機:guru-dev.selfip.com
User-Agent:Mozilla/5.0(Windows NT 6.1; WOW64; rv:27.0)Gecko/20100101 Firefox/27.0
Accept:text/html,application/xhtml + xml,application/xml; q = 0.9,/; q = 0.8
接受語言:EN-US,EN; Q = 0.5
接受編碼:gzip,放氣
的Referer:http://guru-dev.selfip.com/
曲奇:toolbarDisplay =隱藏; CakePHP的= edh8riumsm2kb61ka4dih3v6c1
連接:保持活躍
有人有什麼想法嗎?它看起來沒有發送正確的http頭。 –