Oferta Nacional - 234x60

Arquivo

Textos com Etiquetas ‘salvar imagem php’

Salvar como em php – download de arquivos

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Olá!

Neste post vou mostrar como salvar arquivos usando PHP. Esta funcionalidade serve para que os arquivos disponibilizados em seu site tenha um link que ao ser clicado, apareça a janela “Salvar como…”.

Seguindo este tutorial, você será capaz de montar um arquivo que recebe parâmetros em GET e depois chama uma função para setar os cabeçalhos dizendo que o arquivo é para download. A vantagem é que você vai criar esse arquivo apenas uma vez, e poderá replicar para todos os links de download do seu site. A funcionalidade detectará automaticamente o mime type do arquivo. Mãos às obra!

Primeiro, vamos criar o arquivo download.php.


<?php
if( isset( $_GET['arquivo'] ) && is_file( $_GET['arquivo'] ) ){

 $arquivo = $_GET['arquivo'];

 // Pega a extensão do arquivo
 $ext = pathinfo($arquivo,PATHINFO_EXTENSION);

 // No vetor abaixo são setados os Mime Types dos possíveis arquivos
 $mimeType = array(
 'mp3'=>'audio/mpeg',
 'pdf'=>'application/pdf',
 'doc'=>'application/msword',
 'ppt'=>'application/vnd.ms-powerpoint',
 'pps'=>'application/vnd.ms-powerpoint'
 );

 //Seta o Mime Type do arquivo de acordo com a extensão
 if(array_key_exists($ext,$mimeType)){
 $mimeType = $mimeType[$ext];
 }else{
 // Se o Mime Type não for encontrado na lista, será usado o padrão application/octet-stream
 $mimeType = "application/octet-stream";
 }

 // Seta os cabeçalhos
 header( "Pragma: public" );
 header( "Expires: 0" );
 header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
 header( "Cache-Control: private",false );
 header( "Content-Type: $mimeType" );

 // A linha abaixo é responsável por dizer que o arquivo é para download
 header( "Content-Disposition: attachment; filename=\"".basename($arquivo)."\";");

 header( "Content-Transfer-Encoding: binary" );
 header( "Content-Length: ".filesize($arquivo));

 // Lê e escreve o conteúdo do arquivo para o buffer de saída
 readfile($arquivo);

 exit;
} else {
 // Para dar um erro 404 de arquivo não encontrado
 header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
 header("Status: 404 Not Found");

 // Se as duas linhas acima não der um erro 404 exibe a mensagem abaixo
 die("Arquivo não encontrado");
}
?>

Agora vamos criar o arquivo que conterá o link de download de um arquivo de exemplo (exemplo.html):


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Exemplo de download e arquivo</title>
</head>
<body>
<h1>Exemplo de download de arquivos com opção "Salvar como"</h1>
<b>meu_arquivo.mp3</b> <a href="download.php?arquivo=meu_arquivo.mp3">Clique para fazer o download</a>
</body>
</html>

Pronto!

Agora rode o arquivo exemplo.html e clique no link “Clique para fazer o download” e aparecerá a janela “Salvar como…” para fazer download do arquivo!

Lembrando que o arquivo deve estar no mesmo diretório que o arquivo download.php, ou então você deverá passar também o caminho do arquivo ;) .

Uma dica: se você quiser uma lista de mime types de arquivos, acesse http://www.mimetype.org/.

Deixe seu comentário!

Até a próxima!

Posts Relacionados:

SEO Powered by Platinum SEO from Techblissonline