2009-06-17 24 views
10

¿Cómo puedo guardar un archivo usando curl y PHP?Guardar archivo utilizando curl y PHP

+2

¿Seguro que necesita rizo? es file_get_contents ("http://whatever.com") no es suficiente? –

+1

Estoy seguro de que más del 50% de las 14,000 vistas no encontraron que 'file_get_contents' era suficiente – redolent

Respuesta

8

Se puede utilizar:

<?php 
// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 

// grab URL and pass it to the browser 
$out = curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 


$fp = fopen('data.txt', 'w'); 
fwrite($fp, $out); 
fclose($fp); 

?> 

Ver: http://jp2.php.net/manual/en/function.curl-exec.php y http://us3.php.net/manual/en/function.fwrite.php

+2

Esto hará el trabajo para archivos pequeños, pero carga todo el archivo en la memoria antes de guardarlo, por lo que probablemente te pegue fatal ' errores de memoria insuficiente si el archivo es más grande que el límite de memoria de PHP. La respuesta de Haim Evgi transmite correctamente el archivo al disco, lo que evita este problema. –

+0

I 'curl_exec' directamente en' file_put_contents() '. Por lo menos, guarda 3 líneas de código. –

22

querías que algo como esto?

function get_file($file, $local_path, $newfilename) 
{ 
    $err_msg = ''; 
    echo "<br>Attempting message download for $file<br>"; 
    $out = fopen($local_path.$newfilename,"wb"); 
    if ($out == FALSE){ 
     print "File not opened<br>"; 
     exit; 
    } 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_FILE, $out); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_URL, $file); 

    curl_exec($ch); 
    echo "<br>Error is : ".curl_error ($ch); 

    curl_close($ch); 
    //fclose($handle); 

}//end function 

Funcionalidad: Sus una función y acepta tres parámetros

get_file($file, $local_path, $newfilename) 

$file: es el nombre del objeto a ser recuperados

$local_path: es la ruta local al directorio para almacenar el objeto

$newfilename: es el nuevo nombre de archivo en el sistema local

-3

Creo que curl tiene la opción -o para escribir la salida en un archivo en lugar de stdout.

Después de -o debe proporcionar el nombre del archivo de salida.

ejemplo:

 

curl -o path_to_the_file url 
+1

Esto es para la versión * de línea de comandos de curl, pero no para la biblioteca curl de PHP. –