在PHP拼抢CSV超过卷曲

问题描述:

不幸的是,我不能使用任何的fopen或的file_get_contents,所以我的工作脚本已经成为一个破碎的一个使用卷曲:在PHP拼抢CSV超过卷曲

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$tmp = curl_exec($ch); 
curl_close($ch); 
header("Content-type: application/csv"); 
header(Content-Disposition: attachment; filename=$start.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
echo $tmp; 

URL将在一个CSV文件 - ,而fopen版本之前的工作。我得到的只是一个空的CSV文件,返回给浏览器。

谢谢。

+0

在发送''csv''头文件之前先试着看看是否有任何输出 –

好吧,可能会出现一些错误的地方,很可能$ tmp变量将成为您的密钥。

我假定$ url和$开头的变量已经正确申报

第一件事,我建议是做线沿线的东西:

if(! $tmp = curl_exec($ch)) 
     { 
      echo curl_error($ch); 
     } 

    else 
    { 

     header("Content-type: application/csv"); 
     header("Content-Disposition: attachment; filename=$start.csv"); 
     header("Pragma: no-cache"); 
     header("Expires: 0"); 
     echo $tmp; 
    } 
    curl_close($ch); 

可能给你约一个想法是什么出错了

+0

上面的代码是获取CSV还是只显示更多的curl请求信息? – hitautodestruct

默认curl_exec返回一个布尔值。您需要将CURLOPT_RETURNTRANSFER选项设置为1true以获取返回的传输有效内容。

+0

这个选项可能是原因 – ChrisK

将CURLOPT_RETURNTRANSFER设置为1,以便将某些内容放入$ tmp中,否则,curl_exec将直接输出csv(并在发送标题之前)。请参阅http://www.php.net/manual/en/function.curl-setopt.php

我相信curl_exec($ch)不会返回字符串,除非您先使用curl_setopt($ch,CURLOPT_RETURNTRANSFER,true)