Как заставить файл скачать в Joomla 3? - PullRequest
0 голосов
/ 28 апреля 2018

Написал пользовательский модуль для Joomla. Пользователь вводит имя файла в текстовом поле и PDF-файл с введенным значением в качестве имени должен быть загружен. Но при нажатии страница перенаправляется на домашнюю страницу. Вот код

$ file = $ _POST ['posttext']. '' , 'PDF';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; 
    filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

Попытка добавления ob_flush (), как предложил один из аскеров, но ничего хорошего Код отлично работает как отдельный php файл.

1 Ответ

0 голосов
/ 29 апреля 2018

Попробуйте следующее

    $app = JFactory::getApplication();
    $file = $app->input->get('posttext') . '.pdf';
    if (JFile::exists($file)) {
            // File headers
            header("Content-type: application/pdf");
            header("Content-Disposition: attachment");

            // File contents.
            readfile($file);
    }

Если у вас все еще есть проблемы, вы можете проверить, существует ли файл в Joomla и загрузить файл в новой вкладке / окне, используя window.open()

...