Programación

La programación informática o programación algorítmica, acortada como programación, es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales.

martes, 26 de julio de 2016

Cómo forzar la descarga de archivos en PHP

Para descargar un archivo en PHP, usted necesita para forzar al navegador a descargar archivo excepto mostrar. En este artículo, vamos a mostrar cómo descargar un archivo desde el directorio o servidor en PHP. Usando header() y readfile(), puede descargar un archivo en PHP. Aquí le proporcionamos el ejemplo código PHP para forzar la descarga de archivos en PHP. Asimismo, este simple script PHP ayuda a implementar un enlace de descarga que descarga un archivo desde el directorio. El siguiente script de ejemplo se puede utilizar para descargar cualquier tipo de archivo como texto, imágenes, documentos PDF, ZIP, etc.

Descargar un archivo en PHP

$fileName basename('codexworld.txt');$filePath 'files/'.$fileName;
if(!empty($fileName) && file_exists($filePath)){
    // Define headers
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=$fileName");
    header("Content-Type: application/zip");
    header("Content-Transfer-Encoding: binary");
    
    // Read the file
    readfile($filePath);
    exit;
}else{
    echo 'The file does not exist.';
}

Descargar un archivo a través del vínculo de anclaje

A veces es necesario para proporcionar un vínculo al usuario para descargar el archivo desde el servidor. Utilice el siguiente código de ejemplo para mostrar un vínculo HTML Para descargar un archivo desde el directorio usando PHP.

HTML :
<a href="download.php?file=codexworld.png">Dowload File</a>
PHP (download.php):
<?phpif(!empty($_GET['file'])){
    $fileName basename($_GET['file']);
    $filePath 'files/'.$fileName;
    if(!empty($fileName) && file_exists($filePath)){
        // Define headers
        header("Cache-Control: public");
        header("Content-Description: File Transfer");
        header("Content-Disposition: attachment; filename=$fileName");
        header("Content-Type: application/zip");
        header("Content-Transfer-Encoding: binary");
        
        // Read the file
        readfile($filePath);
        exit;
    }else{
        echo 'The file does not exist.';
    }
}

Exportando datos a excel en PHP


En este breve tutorial hablaremos sobre exportar datos a Excel en PHP. Muchos lugares en nuestro proyecto que estamos necesarios para proporcionar la exportación a la funcionalidad de Excel. Con el siguiente script simple puede implementar fácilmente los datos de exportación a la funcionalidad de Excel usando PHP. 

Aquí es la matriz de datos ($data) y a exportar estos datos a Excel usando PHP.


$data = array(
    array("First Name" => "Nitya""Last Name" => "Maity""Email" => "nityamaity87@gmail.com""Message" => "Test message by Nitya"),
    array("First Name" => "Codex""Last Name" => "World""Email" => "info@codexworld.com""Message" => "Test message by CodexWorld"),

    array("First Name" => "John""Last Name" => "Thomas""Email" => "john@gmail.com""Message" => "Test message by John"),
    array("First Name" => "Michael""Last Name" => "Vicktor""Email" => "michael@gmail.com""Message" => "Test message by Michael"),
    array("First Name" => "Sarah""Last Name" => "David""Email" => "sarah@gmail.com""Message" => "Test message by Sarah")
);
Hemos creado filterData() para una cadena de filtro proporcionado por la matriz de datos.

function filterData(&$str)
{
    $str preg_replace("/\t/""\\t"$str);
    $str preg_replace("/\r?\n/""\\n"$str);
    if(strstr($str'"')) $str '"' str_replace('"''""'$str) . '"';
}
$variable fileName el nombre del archivo para descargar y también encabezado de contenido está definida para su descarga.

// file name for download$fileName "codexworld_export_data" date('Ymd') . ".xls";
// headers for downloadheader("Content-Disposition: attachment; filename=\"$fileName\"");header("Content-Type: application/vnd.ms-excel");
Ahora tenemos ejecutar bucle a través de cada par clave/valor en $data. Uso de $variable de indicador nos mostrará los nombres de columna en la primera fila. array walk() se utiliza para filtrar los datos, junto con filterData().

$flag false;
foreach($data as $row) {
    if(!$flag){
        // display column names as first row
        echo implode("\t"array_keys($row)) . "\n";
        $flag true;
    }
    // filter data
    array_walk($row'filterData');
    echo implode("\t"array_values($row)) . "\n";
}

exit;
Secuencia de comandos completa es dada a continuación.

<?php
    $data = array(
        array("First Name" => "Nitya""Last Name" => "Maity""Email" => "nityamaity87@gmail.com""Message" => "Test message by Nitya"),
        array("First Name" => "Codex""Last Name" => "World""Email" => "info@codexworld.com""Message" => "Test message by CodexWorld"),
        array("First Name" => "John""Last Name" => "Thomas""Email" => "john@gmail.com""Message" => "Test message by John"),
        array("First Name" => "Michael""Last Name" => "Vicktor""Email" => "michael@gmail.com""Message" => "Test message by Michael"),
        array("First Name" => "Sarah""Last Name" => "David""Email" => "sarah@gmail.com""Message" => "Test message by Sarah")
    );
    
    function filterData(&$str)
    {
        $str preg_replace("/\t/""\\t"$str);
        $str preg_replace("/\r?\n/""\\n"$str);
        if(strstr($str'"')) $str '"' str_replace('"''""'$str) . '"';
    }
    
    // file name for download
    $fileName "codexworld_export_data" date('Ymd') . ".xls";
    
    // headers for download
    header("Content-Disposition: attachment; filename=\"$fileName\"");
    header("Content-Type: application/vnd.ms-excel");
    
    $flag false;
    foreach($data as $row) {
        if(!$flag) {
            // display column names as first row
            echo implode("\t"array_keys($row)) . "\n";
            $flag true;
        }
        // filter data
        array_walk($row'filterData');
        echo implode("\t"array_values($row)) . "\n";

    }
    
    exit;?>