$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // URL файла
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: text/plain') ); // Заголовки по необходимости
curl_setopt($ch, CURLOPT_PROXY, 'XXX.XXX.XXX.XXX:port'); // Прокси по необходимости
$data = curl_exec($ch);
file_put_contents("filename.ext", $data); // Сохранение файла на HDD
Остальные настройки курла по желанию)
Если нужно с запросом браузера о сохранении файла замени последнюю строчку на
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=filename.ext');
header('Content-Length: ' . strlen($data) );
echo $data;