Как заставить файл скачать через AJAX в Zend Framework? - PullRequest
0 голосов
/ 21 декабря 2010

Я ищу способ отображения страницы диалога загрузки браузера, когда пользователь нажимает кнопку загрузки.

Это мой HTML -

    <span id="ajaxdownloadcontent" class="ajaxaction ajaxbutton" 
onclick="javascript:AjaxDownloadContent('http://localhost/ajax/download/pic/12')"> 
Download </span>

Мой Javascript -

function AjaxDownloadContent(path) {
    $.post(path);
}

Мой контроллер, AjaxController.php -

class AjaxController extends Zend_Controller_Action {

public function init() {
    if ($this->getRequest()->isXmlHttpRequest()) {
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(TRUE);
    }
}

public function downloadAction() {
    if ($this->getRequest()->isXmlHttpRequest()) {
            $this->getResponse()
                    ->clearAllHeaders()
                    ->setHeader('Content-Disposition', 'attachment;filename="Google_Logo.gif"')
                    ->sendHeaders()
                    ->setBody(file_get_contents("http://www.google.com/logos/logo.gif"))
                    ->sendResponse();
return true;
}

Так выглядят заголовки в firebug (обратите внимание, что тип содержимого был изменен на text / html)

alt text

Я думаю, что это из-за следующего кода в загрузочном.*alt text

Как принудительно загрузить файл (в данном случае изображение) через AJAX, когда пользователь нажимает кнопку загрузки?

1 Ответ

4 голосов
/ 21 декабря 2010

Насколько я знаю, это невозможно по маршруту Ajax.

Почему бы не использовать простой тег <a>, указывающий на ресурс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...