|
||
|
|
Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» Início » Programação » PHP » Como forçar o download de um arquivo em PHP
--> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 30/11/2006Como forçar o download de um arquivo em PHP
Oberaldo Bull Programador PHP/MySql, trabalho no desenvolvimento de sites e sistemas dinâmicos. Faço parte da EquipeXQ de programadores, administro o site nacional do framework CakePHP (www.cakephp.com.br).
Veremos agora, como forçar o download de um arquivo, passando parâmetros de uma página a outra.
Tutorial Editado devido problemas para fazer o download no navegador IE. Como exemplo, imagine que você tem uma página com um link para um arquivo PDF, e normalmente, ao clicarmos neste tipo de arquivo, ele não nos dá a opção de salvá-lo, abrindo automaticamente. Para que isto não ocorra, utilize o código a seguir, para forçar o download do arquivo. Em uma página.html, insira o link desta maneira: <a href=download.php?file=arquivo.pdf>Arquivo</a> Agora, o código da página que irá forçar o download download.php Artigos relacionados
Este artigo é a parte 3 de 4 da seguinte série:
Sérgio Rafael <serginho_the_best@yahoo.com.br>
cara gosto muito, legal mesmo, to gostado muito dos seus artigos pq é simples para mim aprender, obrigado por isso espero mais :D
![]() ![]() ![]() ![]() ![]() Acelio Filho <acelio@floripasom.com>
Nunca tinha prestado muita atenção no ´header´ e nem sabia que existia: ´application/save´
Uma graaaaande foooorça... Valeu... acrescento um código pra fazer uma comparação entre ler e baixar o arquivo <cod> <pre> <?php if(_GET'file'=="" _GET'file'==NULL) { print"<a href="download.php?file=arquivo.pdf">Copiar Arquivo</a>"; print"<hr><a href="arquivo.pdf">Ler Arquivo</a>"; }else{ file = _GET'file'; // pega o endereço do arquivo // ou o nome dele se o arquivo // estiver na mesma pagina!! header("Content-type: application/save"); header("Content-Length:".filesize(file)); header('Content-Disposition: attachment; filename="' . file . '"'); header('Expires: 0'); header('Pragma: no-cache'); readfile("file"); } ?> <pre> </cod> ![]() ![]() ![]() ![]() ![]() Victor Sales <vicotorsalles93@hotmail.com>
Muito bom o seu trabalho cara! gostei mto...coisas simples mais q sao muito boas!!!
![]() ![]() ![]() ![]() ![]() Mazon <marcelomazon#gmail.com>
Só funciona corretamente no Firefox.
No IE ele mostra como download o attachent o arquivo download.php. Voce então precisa renomear o arquivo forçando o tipo de acordo com o arquivo q está sendo baixado. Do contrário ele salva como download.php... Alguém sabe o porquê disso? ![]() ![]() ![]() ![]() ![]() Massa <massa@brimak.com.br>
Cuidado com o emprego deste Script.
Veja este link sobre segurança http://forum.wmonline.com.br/index.php?showtopic=169672 ![]() ![]() ![]() ![]() ![]() NandoGyn
muito bom me serviu muito estava procurando a muito tempo
![]() ![]() ![]() ![]() ![]() Anderson Caparróz <andersoncaparroz@gmail.com>
ISTO É UM CRIME A SEGURANÇA DE SEUS SITES
Imaginemos por exemplo que o arquivo chamado DOWNLOAD.PHP , esteja em uma determinada pasta chamada DOWNLOADS de seu site , e nesta pasta estejam também os arquivos que vc. gostaria de disponibilizar aos usuários de seu site. o objetivo , que era disponibilizar o arquivo EXEMPLO.DOC para download através da url: www.seusite.com.br/downloads/download.php?file=exemplo.doc transforma-se na porta de entrada para vasculharem seus scripts php em busca de senhas , nomes de tabelas de Banco de dados entre outras importantes informações que não gostariamos de tornar publicas. como ?!?! com a simgela URL abaixo www.site.com.br/downloads/download.php?file=../index.php o usuário mal intencionado terá acesso ao seu script index.php ao invés do arquivo exemplo.doc ,.. e por ae vai ..... ![]() ![]() ![]() ![]() ![]() lucas <briguites@hotmail.com>
mt bom cara... meus parabéms...
![]() ![]() ![]() ![]() ![]() Augusto <guto_ams@hotmail.com>
legal =
![]() ![]() ![]() ![]() ![]() daniel <daniellfo@gmail.com>
nâo testei ainda o script e preciso muito de um, e agora os caras entram aqui e dizem que não é seguro e tals, moçada, entao posta um como deve ser e para com isso, fica com a impressão de que tão só de sacanagem com o autor do script...abraço a todos! : Não avaliado
Diogo <dodordr@gmail.com>
Bom seu script!! mas se eu quero forçar o download de arquivos com extensões diferentes???
![]() ![]() ![]() ![]() ![]() Jorge Fieza <jmfieza@gmail.com>
povo,
basta vcs aliarem este código à um banco de dados. www.seusite.com.br/download.php?id=1 aí ele busca num banco de dados o endereco que está escrito lá. e substitui no codigo. flwz. ![]() ![]() ![]() ![]() ![]() Gabriel <gmedina@brturbo.com.br>
Cara, a ideia é muito legal mas a falha de segurança é enorme! Da pra baixar os fontes todos do site assim! Rola nao...
![]() ![]() ![]() ![]() ![]() Mauricio Jr <mauriciocardosojr@yahoo.com.br>
Apenas uma dúvida. O seu programa está perfeito, forçando qualquer arquivo para download... porem como faço para fechar a janela que lê o arquivo, pois abra a tela de dialago com o cliente para salvar mas a o browser fica por traz aberto como faço para fechar essa janela, já tentei javascript e nada! Desde já agradeço.
![]() ![]() ![]() ![]() ![]() Rubens Designer <rubensd7@hotmail.com>
muito show!
![]() ![]() ![]() ![]() ![]() Rodrigo Mamede <rodrigomamedep@hotmail.com>
Rapaiz... horas de noites mal dormidas economizadas...
Valeu mesmo! ![]() ![]() ![]() ![]() ![]() Matheus <peixoto86@gmail.com>
muuuuuito bom, maravilha o script, me ajudou bastante!!!
![]() ![]() ![]() ![]() ![]() Angelo <angelogaiteiro@hotmail.com>
Oberaldo Forçar download é baixar de sites de html php por exemplo de um site que vende musicas baixar de graça? É isso? Tô aprendendo
![]() ![]() ![]() ![]() ![]() Luis Henrique Weirich de Matos <luisweirich@gmail.com>
O código realmente soluciona o problema de forçar o download.
Mas o problema de segurança existe. Este código permite acesso sobre arquivos que não possam ser revelados. Por exemplo: Arquivo que guarde host, login e senha do banco de dados. Para solucionar este problema aconselho condicionar o download. Mas como? É simples! Basta limitar o download para arquivos de uma extensão especifica, como pdf, ou limitar um diretório especifico, como /docs_pdf/. Ok? See You!!! ![]() ![]() ![]() ![]() ![]() Caio Fernandes <augcaio@gmail.com>
Excelente simples e prático
![]() ![]() ![]() ![]() ![]() Francisco <francisco.nitrox2@hotmail.com>
Olá para fazer downloads do mesmo host ele faz
mais não força download de arquivos outro servidor ? como devo proceder neste caso ? obrigado. ![]() ![]() ![]() ![]() ![]() Nathan Costa <ntmk3cta@hotmail.com>
Testei o seu código e quase funcionou 100%. Não sei pq o arquivo que faço download vem com o conteúdo alterado. Ele coloca o conteúdo da página html no início do arquivo. Se vc tiver alguma dica pra me ajudar, eu fico ainda mais agradecido.
's ![]() ![]() ![]() ![]() ![]() vitor hugo silva <vitorhugo83@gmail.com>
Muito bom o script, mas ao testa-lo na nova versão do internet explorer nao funcionou, deve ser alguma politica de segurança nova. Ele baixa o download.php ao inves do arquivo. abraços!
![]() ![]() ![]() ![]() ![]() vitor hugo silva <vitorhugo83@gmail.com>
Muito bom o script, mas ao testa-lo na nova versão do internet explorer nao funcionou, deve ser alguma politica de segurança nova. Ele baixa o download.php ao inves do arquivo. abraços!
![]() ![]() ![]() ![]() ![]() Bill <bill@referencial.info>
Olá Vitor Hugo,
Agora o script funciona também no IE, bug corrigido, obrigado! ![]() ![]() ![]() ![]() ![]() jose ponce <j.ponce@itelefonica.com.br>
Em vez de gravar um arquivo no computador local, ele mostra no browser... Tem algum jeito de forçar a gravaçao do download no computador local a partir de um arquivo do servidor... Obrigado.
![]() ![]() ![]() ![]() ![]() xD <=)>
tem como trazer os codigos php junto na hora de baixar ???
<?php?> vlw... ![]() ![]() ![]() ![]() ![]() Bruno <bruno_webnet@hotmail.com>
Muito bom!
________________________ Hospedagem de sites apartir de 4,99 e Registros de Domínios Apartir de 24,99! http://www.focushost.com.br - suporte@focushost.com.br ![]() ![]() ![]() ![]() ![]() Wilson S. Franca <wsfranca@gmail.com>
Fico muito grato pela disponibilização da informação, estava necessitando de uma solução destas e foi de cheio a serventia. Obrigado.
![]() ![]() ![]() ![]() ![]() Elias <e_liasz@hotmail.com>
ocorreu o seguinte error:
Parse error: syntax error, unexpected T_STRING in C:Arquivos de programasVertrigoServwwwdownload.php on line 12 esta é a linha 12: header("Content-Length:".filesize(file)); ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|