Io l'ho fatto così:
Codice PHP:
<?php
$url = 'http://www.sito.it/file.ext';
$ch = curl_init();
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
$file_content = curl_exec($ch);
curl_close($ch);
header('Content-Description: Download');
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="file.ext";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.strlen($file_content));
@ob_clean();
@flush();
@ob_start();
echo $file_content;
@ob_end_flush();
exit();
?>
ho provato a scaricare una immagine e funziona.
Però non trovo un'altra funzione (oltre a strlen) per calcolare la dimensione del file.