Chia sẻ hàm remote download curl php chuẩn

Xin chào, Chia sẻ cùng các bạn lập trình 1 hàm download dạng remote file cực lớn thông qua PHP.
Chúng ta có thể dùng hàm này để download về máy tính cá nhân không thông qua lưu trữ của máy chủ.

function download($url,$headers) {
global $config;
set_time_limit(0);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERAGENT, $config['useragent']);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_COOKIEFILE,$config['cookie_file']);
curl_setopt($ch, CURLOPT_COOKIEJAR,$config['cookie_file']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$r = curl_exec($ch);
curl_close($ch);
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header('Cache-Control: private', false);
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="export-data-'.time().'.csv"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . strlen($r)); // provide file size
header('Connection: close');
echo $r;
}

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *