Como baixar um arquivo em php

Como baixar um arquivo em 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 desse tipo de arquivo estiver definida no Href atributo do elemento âncora, então o arquivo baixará automaticamente quando o usuário clicar no link de download. Alguns arquivos, como imagem arquivos, Pdf arquivos, texto arquivos, CSV arquivos, etc., Não baixe automaticamente e, em vez disso, abra no navegador quando o usuário clicar no link de download. Esses arquivos podem ser baixados à força no PHP usando o readfile () função que não baixa automaticamente. Este tutorial mostra como fazer o download à força qualquer arquivo usando o script php.

Verifique os links de download

Foi mencionado anteriormente que fecho eclair e exe arquivos download automaticamente, sem usar o script php. Primeiro, crie um arquivo HTML com o seguinte código. Aqui, os quatro elementos de âncora são definidos para baixar os quatro tipos de arquivos. Esses tipos de arquivos incluem arquivos de texto, zip, pdf e jpg.

Download.html



Baixar arquivos


Baixe o arquivo de texto


Baixe o arquivo zip


Baixe o arquivo PDF


Baixe o arquivo jpg



Saída
A seguinte caixa de diálogo parecerá baixar o arquivo depois de clicar no link do arquivo zip. O usuário pode fazer o download do arquivo ou abrir o arquivo no gerenciador de arquivos.


Se você clicar no arquivo de imagem, a imagem será aberta automaticamente no navegador, conforme mostrado na seguinte saída. Você deve salvar o arquivo para fazer uma cópia do arquivo de imagem na unidade local. Da mesma maneira, quando você clica em PDF e links de arquivo de texto, o conteúdo do arquivo será aberto no navegador sem baixar o arquivo. A solução para esse problema é fazer o download do arquivo com força usando o PHP integrado readfile () função.

Baixe o arquivo usando a função readfile ()

O readfile () A função é usada no script PHP para baixar forçosamente qualquer arquivo do local atual ou o arquivo com o caminho do arquivo. A sintaxe desta função é dada abaixo.

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

Esta função pode levar três argumentos. O primeiro argumento é obrigatório e os outros dois argumentos são opcionais. O primeiro argumento, $ nome do arquivo, armazena o nome do arquivo ou nome do arquivo com o caminho que vai baixar. O valor padrão do segundo parâmetro, $ use_include_path, é falso e será definido como true 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: Faça o download do arquivo com o nome do arquivo

Neste exemplo, criaremos um arquivo HTML com o seguinte código, onde o nome do arquivo será passado como um parâmetro do URL nomeado caminho, e o valor deste parâmetro será passado para o arquivo php nomeado download.php.

Download2.html



Baixar arquivos


Baixe o arquivo de texto


Baixe o arquivo zip


Baixe o arquivo PDF


Baixe o arquivo jpg



Criaremos o arquivo php com o seguinte código para baixar o arquivo à força. Aqui o isset () a 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. Em seguida, o cabeçalho() A função é usada para definir as informações necessárias do cabeçalho antes de usar o readfile () função. O nome de base () A 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 baixar o arquivo. O rubor() A função é usada para limpar o buffer de saída. O readfile () A função é usada apenas com o nome do arquivo, aqui.

download.php

if (isset ($ _ get ['caminho'])))

// Leia o nome do arquivo
$ filename = $ _get ['path'];
// Verifique se o arquivo existe ou não
if (file_exists ($ filename))
// Defina informações de cabeçalho
Cabeçalho ('Content-DeScription: File Transfer');
cabeçalho ('Tipo de conteúdo: aplicativo/stream de octeto');
cabeçalho ("Controle de cache: sem cache, não-revalidado");
cabeçalho ("Expira: 0");
Cabeçalho ('Disposição de conteúdo: anexo; nome do arquivo = "'.Nome da base ($ FILENAME).'"');
Cabeçalho ('Length-Length:' . fileSize ($ filename));
cabeçalho ('Pragma: público');
// buffer de saída do sistema limpo
rubor();
// Leia o tamanho do arquivo
readfile ($ filename);
// terminar do script
morrer();

outro
eco "o arquivo não existe.";


outro
eco "o nome do arquivo não está definido."
?>

Saída
A saída a seguir aparecerá após clicar no link de download do arquivo de imagem. O tamanho do arquivo do rosa.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: Faça o download do arquivo com o caminho do arquivo

Se o arquivo existir no local do arquivo fornecido, o caminho do arquivo deverá mencionar 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



Baixar arquivos


Baixe o arquivo PDF


Baixe o arquivo jpg



Criaremos um arquivo php com o seguinte código 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 () A função é usada para limpar o cache que foi armazenado anteriormente. Dois argumentos são usados ​​no readfile () função.

Download2.php

if (isset ($ _ get ['caminho'])))

// Leia o URL
$ url = $ _get ['path'];
// Limpe o cache
ClearStatCache ();
// Verifique o caminho do arquivo existe ou não
if (file_exists ($ url))
// Defina informações de cabeçalho
Cabeçalho ('Content-DeScription: File Transfer');
cabeçalho ('Tipo de conteúdo: aplicativo/stream de octeto');
Cabeçalho ('Disposição de conteúdo: anexo; nome do arquivo = "'.nome de base ($ url).'"');
Cabeçalho ('Length-Length:' . fileSize ($ url));
cabeçalho ('Pragma: público');
// buffer de saída do sistema limpo
rubor();
// Leia o tamanho do arquivo
readfile ($ url, verdadeiro);
// terminar do script
morrer();

outro
eco "o caminho do arquivo não existe.";


eco "o caminho do arquivo não está definido."
?>

Saída
Depois que o link de download do arquivo pdf for clicado, a seguinte saída será exibida.

Vídeo tutorial

Conclusão

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