Como baixar um arquivo em PHP

How Download File Php



Geralmente, nenhum script PHP é necessário para baixar um arquivo com as extensões Exe e fecho eclair . Se a localização do arquivo deste tipo de arquivo for definida no href do elemento âncora, o arquivo é baixado automaticamente quando o usuário clica no link de download. Alguns arquivos, como imagem arquivos, PDF arquivos, texto arquivos, CSV arquivos, etc., não são baixados automaticamente e, em vez disso, abrem no navegador quando o usuário clica no link de download. Esses arquivos podem ser baixados à força em PHP usando o readfile () função que não baixa automaticamente. Este tutorial mostra como forçar o download de qualquer arquivo usando script PHP.

Verifique os links de download

Foi mencionado anteriormente que fecho eclair e Exe os arquivos são baixados automaticamente, sem usar o script PHP. Primeiro, crie um arquivo HTML com o código a seguir. Aqui, os quatro elementos âncora são definidos para baixar os quatro tipos de arquivos. Esses tipos de arquivo incluem arquivos TEXT, ZIP, PDF e JPG.







Download.html



< html >
< cabeça >
< título >Download de arquivos</ título >
</ cabeça >
< corpo >
< p >< para href='abc.txt'>Baixar arquivo TEXT</ para ></ p >
< p >< para href='horizon.zip'>Baixar arquivo ZIP</ para ></ p >
< p >< para href='lecture.pdf'>Baixar arquivo PDF</ para ></ p >
< p >< para href='rose.jpg'>Baixar arquivo JPG</ para ></ p >
</ corpo >
</ html >

Saída
A seguinte caixa de diálogo aparecerá para baixar o arquivo após clicar no link do arquivo zip. O usuário pode baixar o arquivo ou abri-lo no gerenciador de arquivos.




Se você clicar no arquivo de imagem, a imagem será aberta automaticamente no navegador, conforme mostrado na saída a seguir. Você deve salvar o arquivo para fazer uma cópia do arquivo de imagem na unidade local. Da mesma forma, ao clicar nos links dos arquivos PDF e TEXTO, o conteúdo do arquivo será aberto no navegador sem fazer o download do arquivo. A solução para este problema é fazer o download do arquivo à força usando o PHP embutido readfile () função.





Baixar arquivo usando a função readfile ()

o readfile () A função é usada no script PHP para forçar o download de qualquer arquivo do local atual ou o arquivo com o caminho do arquivo. A sintaxe desta função é fornecida a seguir.



Sintaxe
int readfile (string $ filename [, bool $ use_include_path = false [, resource $ context]])

Esta função pode receber três argumentos. O primeiro argumento é obrigatório e os outros dois argumentos são opcionais. O primeiro argumento, $ filename , armazena o nome do arquivo ou nome do arquivo com o caminho do download. O valor padrão do segundo parâmetro, $ use_include_path , é falso e será definido como verdadeiro se o nome do arquivo com o caminho for usado no primeiro argumento. O terceiro argumento, $ context , é usado para indicar o recurso de fluxo de contexto. Esta função retorna o número de bytes lidos do arquivo mencionado no primeiro argumento. Os usos desta função são mostrados nos dois exemplos a seguir.

Exemplo 1: Baixar arquivo com nome de arquivo

Neste exemplo, vamos criar um arquivo HTML com o seguinte código, onde o nome do arquivo será passado como parâmetro da URL chamada caminho , e o valor deste parâmetro será passado para o arquivo PHP denominado download.php .

download2.html

< html >
< cabeça >
< título > Baixar arquivos</ título >
</ cabeça >
< corpo >
< p >< para href='download.php? path = abc.txt'> BaixarTEXTOArquivo</ para ></ p >
< p >< para href='download.php? path = horizon.zip'> Baixar arquivo ZIP</ para ></ p >
< p >< para href='download.php? path = lecture.pdf'> Baixar arquivo PDF</ para ></ p >
< p >< para href='download.php? path = rose.jpg'> Baixar arquivo JPG</ para ></ p >
</ corpo >
</ html >

Vamos criar o arquivo PHP com o seguinte código para fazer o download do arquivo à força. Aqui o perdido) função é usada para verificar se o $ _GET [‘caminho’] é definido. Se a variável for definida, o o arquivo existe() A função é usada para verificar se o arquivo existe no servidor. A seguir, o cabeçalho() função é usada para definir as informações de cabeçalho necessárias antes de usar o readfile () função. o nome de base () função é usada para recuperar o nome do arquivo, e o tamanho do arquivo() A função é usada para ler o tamanho do arquivo em bytes, que será mostrado na caixa de diálogo de abertura para fazer o download do arquivo. o rubor() função é usada para limpar o buffer de saída. o readfile () função é usada apenas com o nome do arquivo, aqui.

download.php



E se( perdido ($ _GET['caminho']))
{
// Leia o nome do arquivo
$ filename = $ _GET['caminho'];
// Verifique se o arquivo existe ou não
E se( o arquivo existe ($ filename)) {

// Definir as informações do cabeçalho
cabeçalho ('Descrição do conteúdo: Transferência de arquivo');
cabeçalho ('Content-Type: application / octet-stream');
cabeçalho ('Cache-Control: no-cache, must-revalidate');
cabeçalho ('Expira em: 0');
cabeçalho ('Disposição de conteúdo: anexo; filename = ''. nome de base ($ filename).'' ');
cabeçalho ('Comprimento do conteúdo: ' . tamanho do arquivo ($ filename));
cabeçalho ('Pragma: público');

// Limpe o buffer de saída do sistema
rubor ();

// Leia o tamanho do arquivo
readfile ($ filename);

// Terminar do script
a ();
}
outro{
jogou fora 'Arquivo não existe.';
}
}
outro
jogou fora 'Nome do arquivo não está definido.'
?>

Saída
A seguinte saída aparecerá após clicar no link de download do arquivo de imagem. O tamanho do arquivo do rose.jpg imagem é 27,2 KB , conforme mostrado na caixa de diálogo. Você pode baixar o arquivo selecionando o Salvar Arquivo botão de rádio e pressionando o OK botão.

Exemplo 2: Baixar arquivo com caminho de arquivo

Se o arquivo existir no local de arquivo fornecido, o caminho do arquivo deverá ser mencionado no URL. Neste exemplo, criaremos um arquivo HTML com o seguinte código, que passará o nome do arquivo com o caminho do arquivo:

download3.html

< html >
< cabeça >
< título >Download de arquivos</ título >
</ cabeça >
< corpo >
< p >< para href='download.php? path = downloads / lecture.pdf'>Baixar arquivo PDF</ para ></ p >
< p >< para href='download2.php? path = downloads / rose.jpg'>Baixar arquivo JPG</ para ></ p >
</ corpo >
</ html >

Criaremos um arquivo PHP com o código a seguir para baixar um arquivo do caminho do arquivo. O código PHP no exemplo anterior será ligeiramente modificado para baixar o arquivo do caminho fornecido. o clearstatecache () função é usada para limpar o cache que foi armazenado anteriormente. Dois argumentos são usados ​​no readfile () função.

download2.php


E se( perdido ($ _GET['caminho']))
{
// Leia o url
$ url = $ _GET['caminho'];

// Limpe o cache
clearstatcache ();

// Verifique se o caminho do arquivo existe ou não
E se( o arquivo existe ($ url)) {

// Definir as informações do cabeçalho
cabeçalho ('Descrição do conteúdo: Transferência de arquivo');
cabeçalho ('Content-Type: application / octet-stream');
cabeçalho ('Disposição de conteúdo: anexo; filename = ''. nome de base ($ url).'' ');
cabeçalho ('Comprimento do conteúdo: ' . tamanho do arquivo ($ url));
cabeçalho ('Pragma: público');

// Limpe o buffer de saída do sistema
rubor ();

// Leia o tamanho do arquivo
readfile ($ url,verdade);

// Terminar do script
a ();
}
outro{
jogou fora 'O caminho do arquivo não existe.';
}
}
jogou fora 'Caminho do arquivo não está definido.'

?>

Saída
Depois que o link de download do arquivo PDF for clicado, a seguinte saída aparecerá.

Vídeo tutorial

Conclusão

Este artigo forneceu uma maneira simples de fazer download forçosamente de qualquer arquivo usando o script PHP, para ajudar os leitores a adicionar o recurso de download em seu script.