[Php] Descargar de forma remota un archivo desde un enlace externo a mi servidor: la descarga se detiene prematuramente



Answers

Question

Tengo un conjunto de páginas donde ingreso la URL de un archivo y hago que mi servidor descargue ese archivo y lo guarde en una carpeta de mi servidor. El problema es que no sé cómo descargar un archivo a mi servidor. He intentado los dos métodos siguientes, y ninguno de los dos funcionó.

Éste arroja un error sobre una secuencia abierta fallida:

$url = 'http://www.example.com/file.zip';
$enc = urlencode($url);
$dir = "/downloads/file.zip";
$raw = file_get_contents($enc);
file_put_contents($dir, $raw);

Este funciona pero solo obtengo 18kb de un archivo de 270kb: (He intentado aumentar el tiempo de espera)

set_time_limit(0);

$url = 'http://www.eample.com/file.zip';
$fp = fopen ('/downloads/file.zip', 'w+');

    $ch = curl_init($url);

    curl_setopt_array($ch, array(
    CURLOPT_URL            => $url,
    CURLOPT_BINARYTRANSFER => 1,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_FILE           => $fp,
    CURLOPT_TIMEOUT        => 50,
    CURLOPT_USERAGENT      => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'
    ));

$results = curl_exec($ch);
if(curl_exec($ch) === false)
 {
  echo 'Curl error: ' . curl_error($ch);
 }