Не удалось загрузить файл CSV в браузер с использованием PHP и MySQL - PullRequest
0 голосов
/ 05 ноября 2019

Мне нужно загрузить запись MySQL в CSV-файл в браузере, но, согласно моему коду, он не работает, как ожидалось. Вот мой код:

$scope.downloadAllCustomerData=function(){
        var url2='../service/admin/customer/customer.php?action=downloadAllCustomerData';
        var method='GET';
        var data1='';
        DataService.connectToServerSideScript(method,url2,data1)
        .then(function(response) {
            console.log('response',response);

        },function(error) {

        })
    }

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

if ($_REQUEST["action"]=="downloadAllCustomerData") {
        header('Content-Type: text/csv; charset=utf-8');  
        header('Content-Disposition: attachment; filename=data.csv');  
        $output = fopen("php://output", "w");  
        fputcsv($output, array('ID', 'Name', 'Email', 'MObile No'));  
        $sql = "SELECT user_id,name,email,mobile from cb_customer_info ORDER BY user_id DESC";
        $stmt = $db->prepare($sql);
        if ($stmt->execute()) {
            $row = $stmt->fetchAll();
            $number_of_rows= count($row);
            if ($number_of_rows > 0) {
                fputcsv($output, $row);
                $data=array("status"=>1,"msg"=>"Downloaded all data successfully.");
            }else{
                $data=array("status"=>0,"msg"=>"No record found.");
            }
            fclose($output);
        }
        echo json_encode($data);
    }

Здесь я пытаюсь скачать mysqlзапись в файл .csv. Мне нужно, когда пользователь нажмет на кнопку, эти записи будут загружены в браузере.

1 Ответ

2 голосов
/ 05 ноября 2019

Лучше формировать данные и выводить их / выводить в браузер вместо использования потока вывода php: //.

Обычные заголовки для загрузки,

            header("Content-Disposition: attachment;filename=\"".$file_name."\"");
            header('Content-Type: '.$content_type); 
            header("Accept-Ranges: bytes"); 
            header("Pragma: private"); 
            header("Expires: -1"); 
            header("Cache-Control: private, must-revalidate, post-check=0, pre-check=0"); 
            header("Content-Length: ".$filesize); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...