Downloading Files in PHP

2

I have an application in PHP and a URL of a file. I would like that when the user clicks on any button, cause the browser to trigger the action to download or open the download options window of that file (in the case of Firefox).

The file can be ANY EXTENSION, such as a source code, a compressed file, or a multimedia file.

Note: Download in the sense, server - > user.

    
asked by anonymous 19.02.2016 / 21:20

1 answer

7

If you simply want to download an existing file simply put the download attribute in the tag a:

<a href="caminho-ate-o-arquivo.txt" download>Clique aqui para fazer o download</a>

If you want the download to be done the moment the page loads, just do this:

<?php

    // Define o tempo máximo de execução em 0 para as conexões lentas
    set_time_limit(0);
    // Arqui você faz as validações e/ou pega os dados do banco de dados
    $aquivoNome = 'imagem.jpg'; // nome do arquivo que será enviado p/ download
    $arquivoLocal = '/pasta/do/arquivo/'.$aquivoNome; // caminho absoluto do arquivo
    // Verifica se o arquivo não existe
    if (!file_exists($arquivoLocal)) {
    // Exiba uma mensagem de erro caso ele não exista
    exit;
    }
    // Aqui você pode aumentar o contador de downloads
    // Definimos o novo nome do arquivo
    $novoNome = 'imagem_nova.jpg';
    // Configuramos os headers que serão enviados para o browser
    header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename="'.$novoNome.'"');
    header('Content-Type: application/octet-stream');
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . filesize($aquivoNome));
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Expires: 0');
    // Envia o arquivo para o cliente
    readfile($aquivoNome);
?>

Font

    
19.02.2016 / 21:31