cURL PHP请求和下载输出

时间:2014-10-10 21:37:57

标签: php curl

如何使用CURL命令发出PHP请求以将表数据输出到.csv文件,然后在文件准备好后下载该文件?到目前为止,我有:

PHP

if(isset($_GET['FROMCURL'])){
    if(isset($_GET['table'])){
        $table = $_GET['table'];    
    }

    if($_GET['FROMCURL'] == "test"){
        dump_data($db, $table);
    }
}

function dumpData($db, $table){ 
    $tables = array("x", "y", "z");
    if (in_array($table, $tables)){
        try{
            $dumpData = $db->prepare("SELECT * FROM $table");
            $dumpData->execute();
            $data = fopen('../$table_'.time().'.csv', 'a');
            while ($row = $dumpData->fetch(PDO::FETCH_ASSOC))
            {
                $csv = array();
                foreach ($row as $key => $val){
                    if($key != 'x_blob' || $key != 'y_blob' || $key != 'z_blob'){
                        $csv[] = $val.',';  
                    }                   
                }
                fputcsv($data, $csv);
            } 
        }catch(PDOException $e){
            echo $e->getMessage();  
        }
    }
}

我猜的CURL命令是像

那样的东西
curl http://www.website.com/php/tables.php?FROMCURL=test&table=x

我只是不确定如何让它立即下载文件

2 个答案:

答案 0 :(得分:0)

你应该设置标题和 echo 打印这样的内容:

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="sqldump.csv"');

echo $csvdata;

你可以用这样的cURL下载一个文件:

curl -o sqldump.csv "http://url/here"

其中'-o'表示'输出'

答案 1 :(得分:0)

使用curl获取get方法的内容     

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.website.com/php/tables.php?FROMCURL=test&table=x");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
echo curl_exec($ch); // return response
curl_close($ch);