URL браузера не меняется, когда php возвращает файл - PullRequest
0 голосов
/ 16 апреля 2019

Итак, у меня есть плагин WordPress, который создает пользовательскую страницу администратора, например: http://localhost/wp/wp-admin/admin.php?page=download_file

На этой странице есть элемент кнопки, который при нажатии вызывает следующую функцию:

function downloadFile(){
    window.location.href += '&download';
}

И мой php настроен так, что если в URL присутствует атрибут download, он вернет файл.

function download_file()
    {
        global $pagenow;
        if ($pagenow === 'admin.php' && $_REQUEST['page'] === 'download_file&download') {
            $fichero = 'file.txt';
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Content-Type: application/octet-stream");
            header("Content-Disposition: attachment; filename=$fileName");
            header("Content-Transfer-Encoding: binary");
            header("Content-Length: " . filesize($fichero));
            @readfile($fichero);
        }
}

Я пытаюсь понять, почему URL-адрес возвращается к нормальному состоянию, когда это происходит.(Он остается как http://localhost/wp/wp-admin/admin.php?page=download_file, без атрибута download).Если вместо того, чтобы возвращать файл, я отображаю что-либо еще, тогда в URL будет сохранен атрибут download (http://localhost/wp/wp-admin/admin.php?page=download_file&download)

. По-разному ли реагирует браузер, когда запрос к URL возвращает файл?

Как я могу воспользоваться этим поведением, чтобы избежать изменения открытой страницы, если позже я реализую условие для возврата файла, и это условие не будет выполнено, означающее, что URL ничего не вернет? В этом сценарии я быкак URL, чтобы остаться как http://localhost/wp/wp-admin/admin.php?page=download_file, без атрибута, как это происходит сейчас.

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