|
||
|
|
| Conheça o Plugfeed | » 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).
Como forçar o download de um arquivo em PHP
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)); ![]() ![]() ![]() ![]() ![]() rocky
Esse erro na linha 12 é um bug do código, falta um ";" (terminação de linha) na linha anterior.
Quanto ao script até era bom se não tivesse o problema de segurança, pois como ja foi dito, com este código é possivel fazer o download de qualquer ficheiro que esteja hospedado no servidor. ![]() ![]() ![]() ![]() ![]() Ehinarr <ehinarr@msn.com>
Testei para baixar um .php, mas ele continua tentando ler antes de baixar. Poderia funcionar com qualquer extensão.
![]() ![]() ![]() ![]() ![]() Adir Renato <adirenato@hotmail.com>
Muito bomm... me quebrou um baita galho aqui na empresa. Obrigado
![]() ![]() ![]() ![]() ![]() Sérgio Gomes <ser.edu.sjc@hotmail.com>
Cara, vc solucionou um problemão pra mim! Eu estava tendo muita dificuldade para fazer uma pg de download de músicas mp3 nos sites dos meus clientes e esse script resolveu perfeitamente! Muito grato! Parabéns!
![]() ![]() ![]() ![]() ![]() Michel <contato@abusarweb.com.br>
Ola Amigo, Parabéns pelo script, excelênte...
![]() ![]() ![]() ![]() ![]() Diego Fernandes Bernardo <diego@diegowebdesigner.net>
Olá.Estou procurando por esse código ja faz um tempo,mas infelizmente está dando erro.
Quando clico para fazer o download,aparece a seguinte mensagem: Parse error: syntax error, unexpected T_STRING in /home/diegoweb/public_html/download.php on line 7 Fiz do seguinte modo:apliquei o link <a href=download.php?file=arquivo.pdf>Arquivo</a> sendo que,onde está arquivo.pdf coloquei o nome do arquivo(manual_clorador.pdf) e onde está Arquivo,coloquei a figura onde é clicada para ser feito o download.Depois criei a página php com o código q vc forneceu.Tentei mudar a seguinte linha: header("Content-Length:".filesize(file)); onde está filesize, deixei size e mesmo assim não foi.Vi que é exatamente esse código que preciso,porém,pelo q notei,o erro está nessa linha.Poderia me ajudar? Desde já,obrigado ![]() ![]() ![]() ![]() ![]() Erloi <erloiseregati@hotmail.com>
tenho uma pagina download.php
que busca no banco de dados o caminho do arquivo pdf, e lista na tela todos o arquivos junto com o icone. <a href="funcao.php?funcao=download&id=<? echo id ?>">Download</a> </center> como eu coloco este script para que funcione,já fiz varias tentativas e nada agradeço des jà. ![]() ![]() ![]() ![]() ![]() Rivaldo <rivaldoadsi2007@hotmail.com>
Caro amigo, muito boa a ua iniciativa de esvrever esse codigo, coloquei o mesmo na minha plicação, porem alguns arquivos .pdf não abrem após o downloads, mesmo estando normal antes, podes me dier se tem algo de erraedo, a parte de downloads do arquivo é exatamente como o seu. Grato
![]() ![]() ![]() ![]() ![]() Nicola <nicolahsss#gmailc.om>
Sem comentarios
Visite www.paginicial.rg3.net ![]() ![]() ![]() ![]() ![]() flavio <flavio@hotmail.com>
qwerty
![]() ![]() ![]() ![]() ![]() Gil <runtime_inf@hotmail.com>
Gostei e ja estou utilizando este script para forçar o download, mas gostaria de saber se é possivel ele enviar direto para um determinada pasta no micro do cliente sem abrir a caixa solicitando para que o usuario confirme o download tente que clicar no botão salvar? pode ser enviado sem aparecer esta caixa de confirmação e ir para uma pasta especifica? se tiver como pode me passar o codigo?
Obriado ![]() ![]() ![]() ![]() ![]() ![]() |
|
![]() |
|
|