Загрузка файла PHP: PHP отправляет данные файла в ответе ajax, но файл не загружается - PullRequest
0 голосов
/ 11 июня 2019

У меня есть страница HTML, которая позволяет пользователю загрузить файл, есть кнопка для его загрузки, я использую событие onClick, чтобы сделать ajax вызов скрипта php, который дает файл данные.

Проблема в том, что в ответ поступают данные файла, но файл не загружается.

Я уже ссылался на эту загрузку php-файла через ajax-запрос , но моя проблема не решается

HTML страница


<button onClick="download()"> Download </button>

<script>
    function download {
    var url = "download"; //it is a code ignitor project hence it is just an action call.
    var path ="<?php echo $data[0]->file_path . $data[0]->file_name; ?>";
    $.post(url, {path: path}, function(result){

    });
</script>

PHP script


public function download() {
        $path = $this->input->post('path');

        if(!file_exists($path)){
            die('file not found');
        } else {

            header("Content-Disposition: attachment; filename=" . basename($path) . "");
            header("Content-Length: " . filesize($path));
            header("Content-Type: application/octet-stream;");
            readfile($path);
        }
    }

Спасибо.

1 Ответ

1 голос
/ 11 июня 2019

Измените функцию сервера, чтобы она использовала параметр get.Затем откройте новое окно с URL-адресом скрипта.

function download() {
    var path ="<?php echo $data[0]->file_path . $data[0]->file_name; ?>";
    var url = "download?path=" + encodeURIComponent(path); //it is a code ignitor project hence it is just an action call.
    window.open(url);
});
public function download() {
    $path = $this->input->get('path');

    if(!file_exists($path)){
        die('file not found');
    } else {
        header("Content-Disposition: attachment; filename=" . basename($path) . "");
        header("Content-Length: " . filesize($path));
        header("Content-Type: application/octet-stream;");
        readfile($path);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...