_Vinny_ Postado Fevereiro 9, 2011 Denunciar Share Postado Fevereiro 9, 2011 É o seguinte, estou usando esse tutorial: http://scriptbrasil.com.br/forum/index.php?showtopic=89161Eu uso ele há muito para páginas, mas tentei usar para download de arquivo, modificando tenho o seguinte código:download.php<?php if (isset($_GET['zip'])){ switch ($_GET['zip']){ case 'livro': include "files/livro.zip"; break; } }else{ include "index.php"; } ?>Dai eu acesso download.php?zip=livro, e carrga essa página: Tem alguma forma de resolver esse problema? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Danilo Moraes Postado Fevereiro 9, 2011 Denunciar Share Postado Fevereiro 9, 2011 (editado) Beleza _Vinny_? Pois então cara, o problema é simples: MIME TYPE/Content-type errado. Se tu estiver usando firefox, vai no menu Ferramentas->Propriedades da página e olha na linha Tipo. Provavelmente estará text/html que é o content-type padrão configurado no cabeçalho http pelo interpretador de PHP.O que está acontecendo, é qhttp://scriptbrasil.com.br/forum/style_images/sb_images/folder_editor_images/rte-code-button.pngue tu está incluindo os dados do livro.zip e eles estão sendo interpretados como html pelo browser, o que no fim das contas vira nessa "inhaca".O que tu precisa é mudar o mime type, mudando os parametros no cabeçalhoda resposta. Para isso se usa a função header().Aqui tu encontra uma lista dos mime types e para que cada um serve. O mime type padrão para se enviar um arquivo para download é: application/octet-stream. Se apenas mudar o mime type, o arquivo atual é que vai ser enviado para download. Para enviar outro arquivo, daí se configura o Content-Disposition, segue alguns exemplos que encontrei:script prontotutorialAbraço Editado Fevereiro 9, 2011 por Danilo Moraes Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 _Vinny_ Postado Fevereiro 10, 2011 Autor Denunciar Share Postado Fevereiro 10, 2011 Não era bem o que eu queria, mas não funcionou. O que pretendo seria como "esconder" o nome e extensão do arquivo, por exemplo, ao acessar o link:download.php?livro=blablablaSeria o download equivalente ao ao baixar o arquivo /file/livros/blablabla.docDeu pra entender? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 SK15 Postado Fevereiro 10, 2011 Denunciar Share Postado Fevereiro 10, 2011 (editado) Para download você deve enviar cabecalhos HTTP diferentes se não o browser acha que é para imprimir e mostra de fato o código fonte mesmo que binario como no seu caso ... tem muito exemplos na internet ... basta adaptar ao que quer ... Que é quase a mesma coisa que o 'Danilo' já disse :Phttp://scriptbrasil.com.br/forum/index.php?showtopic=105219http://www.phpbrasil.com/articles/article.php/id/1175 Editado Fevereiro 10, 2011 por SK15 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Danilo Moraes Postado Fevereiro 10, 2011 Denunciar Share Postado Fevereiro 10, 2011 Não era bem o que eu queria, mas não funcionou. O que pretendo seria como "esconder" o nome e extensão do arquivo, por exemplo, ao acessar o link:download.php?livro=blablablaSeria o download equivalente ao ao baixar o arquivo /file/livros/blablabla.docDeu pra entender?Não entendi... Tu quer que o usuário apenas passe o nome e ele baixa com uma extensão diferente? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Fevereiro 11, 2011 Denunciar Share Postado Fevereiro 11, 2011 (editado) Da uma olhada em url amigáveis, acredito ser isso que você está procurando.http://brunotorres.net/urls Editado Fevereiro 11, 2011 por Romero Dias Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 _Vinny_ Postado Fevereiro 12, 2011 Autor Denunciar Share Postado Fevereiro 12, 2011 Eu fiz da seguinte forma:<?php if (isset($_GET['zip'])){ switch ($_GET['zip']){ case 'livro': header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=livro.zip"); header("Content-Type: application/zip"); header("Content-Transfer-Encoding: binary"); readfile('livro.zip'); include "files/livro.zip"; break; } }else{ include "index.php"; } ?>Funcionou. Porém no Firefox não faz o download, fica só carregando a página, nos outros navegadores roda numa boa. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 SK15 Postado Fevereiro 12, 2011 Denunciar Share Postado Fevereiro 12, 2011 Tira o 'include' ele não é nessesário para esse seu código ...Quanto se trabalha com "headers" quase sempre você não pode mostrar nada na tela ele é exclusivo e único ...<?php if (isset($_GET['zip'])) { switch ($_GET['zip']) { case "livro": header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename=livro.zip"); header("Content-Type: application/zip"); header("Content-Transfer-Encoding: binary"); readfile('files/livro.zip'); exit(); break; } } else { include "index.php"; } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 _Vinny_ Postado Fevereiro 12, 2011 Autor Denunciar Share Postado Fevereiro 12, 2011 Desconsidere a ultima mensagem. Funcionou, apenas removi o cache do navegador e passou a funcionar. Obrigado a todos por ajudar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
_Vinny_
É o seguinte, estou usando esse tutorial:
http://scriptbrasil.com.br/forum/index.php?showtopic=89161
Eu uso ele há muito para páginas, mas tentei usar para download de arquivo, modificando tenho o seguinte código:
download.php
Dai eu acesso download.php?zip=livro, e carrga essa página:
Tem alguma forma de resolver esse problema?
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.