¿Cómo descargar un archivo CSV en PHP que se activa a través de una URL?

¿Por qué necesitamos descargar archivos CSV?
Los valores separados por comas o archivos CSV son una parte importante de la informática. Casi todos los conjuntos de datos necesarios para entrenar modelos de ciencia de datos están en formato de archivo CSV. Los conjuntos de datos están disponibles en Internet y se convierte en una necesidad absoluta tenerlos fácilmente en la máquina, ya sea en la computadora personal de alguien o en un servidor. En el extremo del servidor, uno puede entrenar sus modelos web con varios conjuntos de datos fácilmente si la persona puede desarrollar un sistema del lado del servidor para descargar fácilmente un archivo CSV en el servidor a través de cualquier URL que apunte a un conjunto de datos.

¿Cómo podemos descargar archivos CSV activados a través de una URL?
Descargar un archivo CSV a través de una URL es muy fácil con PHP y discutiremos aquí cómo lograrlo para descargar un archivo CSV tanto en el servidor como en el cliente.

Para la descarga final del servidor:

Para lograr esto, necesitamos una función de PHP file_get_contents() . Esta es una función PHP incorporada que lee el contenido de un archivo en un tipo de string. La función utiliza una técnica de mapeo de memoria con un caché en el extremo del servidor. Por lo tanto, esta es una opción preferible para nuestro propósito.

Sintaxis:

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

Parámetros: la función tiene un parámetro obligatorio, el $ruta y el resto son opcionales.

  • $ruta: contiene la ruta o la URL del archivo en cuestión.
  • $include_path: busca un archivo en include_path (en php.ini) si el valor está establecido en 1.
  • $contexto: Se utiliza para especificar un contexto.
  • $max_length: Se utiliza para restringir los bytes a leer.

Valor devuelto: Devuelve los datos leídos del archivo o Falso si el proceso falla.

Ejemplo 1: El ejemplo simple demuestra cómo se puede descargar un archivo CSV en el servidor con la función file_get_contents() .

<?php
  
// Initialize a file URL to the variable 
$url = 'Sample-Spreadsheet-10-rows.csv';  
  
// Use basename() function to return
// the base name of file  
$file_name = basename($url); 
      
// Checking if the file is a
// CSV file or not
$info = pathinfo($file_name);
  
if ($info["extension"] == "csv") {
      
    /* Use file_get_contents() function
    to get the file from url and use 
    file_put_contents() function to save
    the file by using base name */   
    if(file_put_contents( $file_name, 
            file_get_contents($url))) { 
        echo "File downloaded successfully";
    }
    else { 
        echo "File downloading failed."; 
    }
}
else echo "Sorry, that's not a CSV file";
  
?>

Salida:
La respuesta que mostrará el navegador en una ejecución exitosa.
csv file download in php

El archivo descargado en el directorio del servidor.
csv file download in php

Para la descarga del extremo del cliente: forzar un archivo CSV en el extremo del cliente a través de PHP es pan comido con una función incorporada de PHP llamada método readfile() . La función lee un archivo y lo pasa al búfer de salida.

Sintaxis:

readfile($filename, $include_path, $context)

Parámetros:

  • $filename: El nombre del archivo a leer.
  • $include_path: busca un archivo en include_path (en php.ini) si el valor está establecido en 1.
  • $contexto: Se utiliza para especificar un contexto.

Valor devuelto: en caso de éxito, devuelve el número de bytes leídos; de lo contrario, devuelve Falso.

Ejemplo 2: El siguiente programa simple demuestra la descarga del archivo csv en la máquina final del cliente con el uso de la función readfile() .

<?php
  
$url = "Sample-Spreadsheet-10-rows.csv";
  
echo "Your file is being checked. <br>";
  
// Use basename() function to return
// the base name of file
$file_name = basename($url); 
  
$info = pathinfo($file_name);
  
// Checking if the file is a
// CSV file or not
if ($info["extension"] == "csv") {
  
    /* Informing the browser that
    the file type of the concerned
    file is a MIME type (Multipurpose
    Internet Mail Extension type).
    Hence, no need to play the file
    but to directly download it on
    the client's machine. */
    header("Content-Description: File Transfer"); 
    header("Content-Type: application/octet-stream"); 
    header(
    "Content-Disposition: attachment; filename=\""
    . $file_name . "\""); 
    echo "File downloaded successfully";
    readfile ($url);
} 
  
else echo "Sorry, that's not a CSV file";
   
exit(); 
  
?>

Producción:
csv file download in php

Publicación traducida automáticamente

Artículo escrito por soumit1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *