1
在我UploadsController我有這樣的下載方法時:缺少數據源配置試圖下載一個文件
function download($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid id for upload', true));
$this->redirect(array('action' => 'index'));
}
$upload = $this->Upload->findById($id);
if (!$upload) {
$this->Session->setFlash(__('Invalid id for upload', true));
$this->redirect(array('action' => 'index'));
}
$path = APP . 'useruploads' . DS . $upload['Upload']['id'];
$this->response->file($path);
//Return reponse object to prevent controller from trying to render a view
return $this->response;
}
但是,試圖下載一個文件,我得到這個錯誤時:
Error: The datasource configuration 493 was not found in database.php.
該文件存在, 我檢查了。 database.php與文件下載有什麼關係?這個錯誤信息對我來說並不合適。
我正在使用Cake 2.4.1。任何人都可以告訴我他們的文件下載如何與2.4.1協同工作?
這裏是堆棧跟蹤是否有幫助:
我發現了什麼: 我的文件名爲5262ffbf-6e44-45b8-abc6-0de8009d1f70。 在文件函數中使用$ path2會給我一個錯誤。 使用帶有硬編碼ID的$ path可以工作。 但是$ path和$ path2的調試輸出是相同的。這怎麼可能?
$path = APP . 'useruploads' . DS . '5262ffbf-6e44-45b8-abc6-0de8009d1f70';
$path2 = APP . 'useruploads' . DS . $upload['Upload']['id'];
debug($path);
debug($path2);
$this->response->file($path2, array('download' => true, 'name' => 'logo.png'));
你不需要返回響應對象,一個簡單的'$ this-> autoRender = false'就足夠了。順便一提。 – mark
謝謝,但它仍然無法正常工作。 我真的不明白爲什麼使用$ path的方法有效,而使用$ path2的方法沒有。它應該是相同的,調試輸出甚至可以這麼說。 – user2672086
很明顯,它們要麼不相等,要麼有別的東西造成問題。當使用硬編碼路徑時,代碼的其餘部分是否仍然相同?根據stacktrace,你正在使用'Media'視圖,你不應該這樣做!此外,實際上只有在控制器操作響應不是「CakeResponse」的實例時纔會調用它。如果未使用「媒體」視圖不能解決問題,請顯示展示上下文和範圍數據的擴展堆棧跟蹤(並請左對齊文本)。 – ndm