Autor: Jose Luis Quintana Trejo
05/03/2023

Como descargar archivos desde una dirección URL usando PHP

Existen varias alternativas para poder descargar un archivo desde un sitio web usando PHP

4191

En este post veremos las diferentes maneras de poder descargar un archivo desde un sitio web usando PHP así como también hablaremos acerca de las implementaciones necesarias para poder obtener este resultado.

Función file_get_contents():

La función file_get_contents() es usada para localizar un archivo, esta función usa técnicas de mapeo en la memoria que le dan soporte al servidor, de esta manera se obtiene un mejor desempeño en la manera que se lee el contenido del archivo.

Sintaxis:

file_get_contents($path, $include_path, $context, $start, $max_length)

Ejemplo:

En este ejemplo se muestra como se lee un archivo dentro de la función file_get_contents()

                                                
                                                    Se inicia declarando una variable que contenga la dirección URL del archivo.
                                                    $url = "https://atomic-webdesign.com/images/metaimg.jpg";

                                                    Se usa la función basename() para obtener el nombre base del archivo.
                                                    $file_name = basename($url);

                                                    Se usa la función file_get_contents() para obtener el archivo
                                                    // desde la dirección URL y se usa la función file_put_contents()
                                                    // para guardar el archivo usando el nombre base
                                                    if (file_put_contents($file_name, file_get_contents($url))) {
                                                      echo "Archivo descargado exitosamente";
                                                    } else {
                                                      echo "No se pudo descargar el archivo";
                                                    }
                                                
                                              

PHP cURL:

cURL significa dirección para el cliente URL, en inglés Client for URL´s, se usan mayúsculas en “URL” para hacer más significativo que es una función que usa direcciones URL, este tipo de proyectos usa dos productos “libcURL” y “cURL”.

Pasos para descargar un archivo:

  • Se declara una variable que contenga la dirección del archivo.
  • Se crea la sesión cURL.
  • Se declara otra variable que contenga el nombre del directorio donde el archivo será descargado.
  • Se usa la función basename() para obtener el nombre base del archivo, sólo si la dirección del archivo es proporcionada en un parámetro.
  • Se guarda el archivo en la ubicación proporcionada.
  • Se abre el archivo guardado en la ubicación que se proporcionó en modo escribir.
  • Se configura la opción cURL para poder transferir.
  • Se ejecuta la sesión cURL, se cierra la sesión cURL y se libera el contenido.
  • Se cierra el archivo.

Ejemplo:

En este ejemplo se muestra como se hacen solicitudes HTTP haciendo uso de PHP cURL y así poder descargar archivos.

                                                
                                                  // Se inicia declarando la dirección URL del archivo
                                                  $url = "https://atomic-webdesign.com/images/metaimg.jpg";

                                                  // Se declara la sesion cURL
                                                  $ch = curl_init($url);

                                                  // Se declara el nombre del directorio
                                                  // donde el archivo será guardado
                                                  $dir = "./";

                                                  // Se usa la función basename() para obtener
                                                  // el nombre base del archivo
                                                  $file_name = basename($url);

                                                  // Se guarda el archivo en la ubicación
                                                  $save_file_loc = $dir . $file_name;

                                                  // Se abre el archivo
                                                  $fp = fopen($save_file_loc, "wb");

                                                  //  Se configura la opción cURL para poder transferir
                                                  curl_setopt($ch, CURLOPT_FILE, $fp);
                                                  curl_setopt($ch, CURLOPT_HEADER, 0);

                                                  // Se ejecuta la sesión cURL
                                                  curl_exec($ch);

                                                  // Se cierra la sesión cURL y se libera el contenido
                                                  curl_close($ch);

                                                  // Cierra el archivo
                                                  fclose($fp);
                                                
                                              

Es bueno recordar que PHP es un lenguaje de programación que se usa del lado del servidor, específicamente para el desarrollo web.


Full Stack Developer, Graphic Designer at Atomic Web Design