2013-05-22 7 views
0

Я использую Cake 2.3 У меня есть приложение, которое позволяет пользователям добавлять продукты и загружать файлы, связанные с этим продуктом. Я столкнулся с проблемой, с использованием объектов ответа, как показано здесь: http://book.cakephp.org/2.0/en/controllers/request-response.htmlМаршрутизация объекта ответа CakePHP?

public function download(){ 
    $path = WWW_ROOT.$product['Product']['filename']; //gets the path-to-file 
    $this->response->file($path, array('download' => true, 'name' => 'Filename')); 
    return $this->response; //as per the docs 
} 

И на мой взгляд:

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

Так вот моя проблема: Файл находится под LOCALHOST/приложение/вебсервера /invoices/example.pdf, однако ссылка на скачивание файла вызывает localhost/products/sendFile/invoices/example.pdf.

Когда я отлаживаю $ path, он дает мне правильный URL-адрес файла, поэтому я оставляю для вывода, что функция загрузки беспорядочна.

Я могу получить доступ к файлу непосредственно в браузере по URL-адресу localhost/app/webroot/invoices/example.pdf.

Почему функция загрузки не маршрутизируется на правильный URL-адрес файла для загрузки? Любая помощь будет принята с благодарностью.

ответ

0

Вы отправляете дополнительный параметр в действие загрузки, но вы не делаете никаких действий с ним.

Измените функцию загрузки на:

public function download($filename){ 
    //The $path is probably wrong, or did you upload the file to the webroot and not into a directory in the webroot? 
    $path = WWW_ROOT.$filename; //gets the path-to-file 
    $this->response->file($path, array('download' => true, 'name' => 'Filename')); 
    return $this->response; //as per the docs 
} 
+0

Я попробовал ваше решение, еще не повезло. Он по-прежнему пытается перейти к URL, а не запускать загрузку. – Cody

+0

Проверьте свои журналы отладки/ошибок. Вы должны найти там больше информации. – noslone

Смежные вопросы