Download Files in PHP

Asked

Viewed 24,921 times

3

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

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

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

1 answer

12


If you simply want to download an existing file just 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 at the time the page is loaded, 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);
?>

Source

  • Show @Adriano de Azevedo, helped me a lot with this tip, thanks

Browser other questions tagged

You are not signed in. Login or sign up in order to post.