dongshang5862 2016-04-14 10:25 采纳率: 0%
浏览 63
已采纳

CURL RETURNTRANSFER下载大文件

I use a funtion to download files trough a private API. Everything goes fine to download small/medium files, but large files is impossible beacause it uses too much memory.

Here is my function:

protected function executeFile($method, $url, $params=array(), $as_user=null) {

    $data_string = json_encode($params);
    $method = strtoupper($method);

    $ch = curl_init();

    if($method == 'GET') {
        $url  = $this->options['api_url'].$url.'?';
        $url .= $this->format_query($params);
        curl_setopt($ch, CURLOPT_URL, $url);
    } else {
        curl_setopt($ch, CURLOPT_URL, $this->options['api_url'].$url);
    }

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    if($as_user) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string),
        'Token: '.$this->token,
        'As: '.$as_user
        ));
    } else {
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string),
        'Token: '.$this->token
        ));
    }

    $result_json = curl_exec($ch);
    $curl_info = curl_getinfo($ch);


    $return             = array();
    $return["result"]   = $result_json;
    $return["entete"]   = $curl_info;
    return $return;
}

How could i optimize this to download files to disk instead of memory ?

Thanks

  • 写回答

2条回答 默认 最新

  • dqu94359 2016-04-14 10:30
    关注

    use CURLOPT_FILE . It will ask for file pointer where download will be saved.

    code will be like

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $fp = fopen("your_file", 'w+');
    curl_setopt($ch, CURLOPT_FILE, $fp);
    
    curl_exec ($ch);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算