在控制器上使用curl直接下载

时间:2014-04-29 12:30:54

标签: php codeigniter curl

我正在尝试直接从链接下载文件,但我需要使用Curl,直接链接无效,服务器没有安全限制,可直接访问。

只需要通过curl访问链接并执行下载。

使用类似的东西:

/ * php script * /

$ url = "http://server:8080/system/downloads/idfile"; 
$ ch = curl_init (); 
curl_setopt ($ ch, CURLOPT_URL, $ url); 
curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt ($ ch, CURLOPT_HEADER, 0); 
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt ($ ch, CURLOPT_BINARYTRANSFER, true); 
$ data = curl_exec ($ ch); 
curl_close ($ ch); 
return $ data; 

/ *结束脚本* /

我在返回之前使用了一些标题,但文件格式为doc,xls,ppt返回已损坏的

header ("Content-type: application/msword"); 
header ("Content-Disposition: attachment; filename=file.doc"); 

可以帮我直接通过点击html页面中的按钮来下载文件并运行脚本卷起来吗?

目前我正在使用codeigniter,其中控制器中此脚本的卷曲,并且操作将通过视图中的链接实现

感谢

2 个答案:

答案 0 :(得分:0)

您可以使用此代码,但始终使用此代码。

function get_all_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
$returned_content = get_all_data('https://www.connectedcommerce.net/');
file_put_contents('open.txt',$returned_content,FILE_APPEND);

答案 1 :(得分:0)

这种方式不起作用。没有返回数据。访问该调用的链接是从另一个系统下载的方法,因此使用受限制的直接访问该链接。 Smpre我通过curl调用方法,但不返回任何内容。下载方法有效,因为测试