para link hacer descargar descarga como colocar codigo boton automaticamente atributo archivos archivo php curl file-get-contents

php - link - Descargar de forma remota un archivo desde un enlace externo a mi servidor: la descarga se detiene prematuramente



descargar archivo pdf javascript (1)

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); }


Éste arroja un error sobre una secuencia abierta fallida:

... $enc = urlencode($url); ...

Diría que no es de extrañar, porque no necesita "urlencode" esa url que ya está codificada correctamente. Tratar:

$url = ''http://www.example.com/file.zip''; $file = "/downloads/file.zip"; $src = fopen($url, ''r''); $dest = fopen($file, ''w''); echo stream_copy_to_stream($src, $dest) . " bytes copied./n";

Ver stream_copy_to_stream Docs . Si necesita establecer más elementos de HTTP como user-agent, etc., use los Documentos de Opciones de Contexto de HTTP .