Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

XGregg

Problema com download via PHP

Recommended Posts

Daí pessoal, to com um pepino aqui, que deve ser algum detalhe.

Fiz um sistema pra download de arquivos, coisa simples, olha só:

 

$arquivo = "12874.jpg";
$mimeType = "image/jpeg";
$bd_txt_imagem_cam = "teste.jpg";
header("Pragma: public");
header("Content-type: ".$mimeType);
header("Content-length: ".filesize($arquivo));
header("Content-Disposition: attachment");
header("Content-Transfer-Encoding: binary");
header("Content-Description: PHP Generated Data");
readfile($arquivo);

Um problema é que no Firefox o arquivo tá vindo como "teste.php" e não "teste.jpg"

 

Outro problema é no IE. Esse script acima tem um include que tem um session_start(); daí também dá problema.

 

Pergunto-lhes então se alguém já passou por esse tipo de problema, pois já to ficando sem alternativas.

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você precisa fazer especificamente ?

Quer fazer um arquivo pra galera baixar, é isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você precisa fazer especificamente ?

Quer fazer um arquivo pra galera baixar, é isso ?

Fala Pirata_.

 

Na verdade isso é uma feature de um sistema maior. Em resumo, há uma lista de imagens (thumbnails) e deve ser possível fazer download do arquivo. O problema é que tenho que forçar a exibição da caixa "Salvar como" do navegador ao invés de exibir a imagem na tela. Então fiz a rotininha acima, que está apresentando os problemas descritos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da uma olhadinha aqui

http://translate.google.com.br/translate?h...cial%26hs%3D0nU

 

da um ctrl F e bota "filename="

 

 

tem algumas coisas..

 

tentei aqui

 

$arquivo = "arquivo.txt";

$mimeType = "image/jpeg";

 

header("Pragma: public");

header("Content-type: ".$mimeType);

header("Content-length: ".filesize($arquivo));

header("Content-Disposition: attachment");

header('filename="teste.jpg"');

header("Content-Transfer-Encoding: binary");

header("Content-Description: PHP Generated Data");

readfile($arquivo);

 

 

mas tb nao deu..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu certo brother

 

eh so mudar

 

header("Pragma: public");

header("Content-type: ".$mimeType);

header("Content-length: ".filesize($arquivo));

header("Content-Disposition: attachment; filename=teste.jpg");

header("Content-Transfer-Encoding: binary");

header("Content-Description: PHP Generated Data");

readfile($arquivo);

 

 

Viu ali?? a soluçao eh nesse header:

header("Content-Disposition: attachment; filename=teste.jpg");

 

ai você pode enfiar uma variavel com o nome q você quer ali..

ex.

header("Content-Disposition: attachment; filename=".$teste.".jpg");

 

E aqui testei no IE, MOZILLA e OPERA e deu certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlww

boa solução!

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu certo brother

 

eh so mudar

 

header("Pragma: public");

header("Content-type: ".$mimeType);

header("Content-length: ".filesize($arquivo));

header("Content-Disposition: attachment; filename=teste.jpg");

header("Content-Transfer-Encoding: binary");

header("Content-Description: PHP Generated Data");

readfile($arquivo);

 

 

Viu ali?? a soluçao eh nesse header:

header("Content-Disposition: attachment; filename=teste.jpg");

 

ai você pode enfiar uma variavel com o nome q você quer ali..

ex.

header("Content-Disposition: attachment; filename=".$teste.".jpg");

 

E aqui testei no IE, MOZILLA e OPERA e deu certo

Foi uma tremanda falha minha. Eu tirei o filename=teste.jpg pois já não sabia mais o que testar. E no final das contas, colei aqui sem ele. Mas já testei com ele também.

 

No FF ele sempre faz download como teste.php ao invés de teste.jpg (indicado no content-disposition). No IE, só se eu abro um session_start() antes de mais nada.

 

Esse tá sinistro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu certo brother

 

eh so mudar

 

header("Pragma: public");

header("Content-type: ".$mimeType);

header("Content-length: ".filesize($arquivo));

header("Content-Disposition: attachment; filename=teste.jpg");

header("Content-Transfer-Encoding: binary");

header("Content-Description: PHP Generated Data");

readfile($arquivo);

 

 

Viu ali?? a soluçao eh nesse header:

header("Content-Disposition: attachment; filename=teste.jpg");

 

ai você pode enfiar uma variavel com o nome q você quer ali..

ex.

header("Content-Disposition: attachment; filename=".$teste.".jpg");

 

E aqui testei no IE, MOZILLA e OPERA e deu certo

Foi uma tremanda falha minha. Eu tirei o filename=teste.jpg pois já não sabia mais o que testar. E no final das contas, colei aqui sem ele. Mas já testei com ele também.

 

No FF ele sempre faz download como teste.php ao invés de teste.jpg (indicado no content-disposition). No IE, só se eu abro um session_start() antes de mais nada.

 

Esse tá sinistro...

 

Estranho, voce ta testando isso localmente ou em um servidor web? Qual a versao do php???

 

Aqui ta funcionando numa boa.. testei no trampo e em casa.. e hoje no trampo de novo... ta ok..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.