Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera beleza? Esse é meu primeiro post aqui no fórum, e já começo com uma dúvida =/
Bom, pela pesquisa que eu fiz não encontrei nenhum tópico com o meu problema.
O caso é o seguinte:
Precisei desenvolver um sisteminha pra disponibilizar arquivos XML(NFe) para download. Fiz os sitema de paginação, login e tudo mais.
Até ai tudo bem.
Como XML é reconhecido pelos browsers, quando se clica no link para o arquivo XML ele não da opção de download já abre a visualização no browser.
Pesquisei e então encontrei várias formas de forçar o download desses tipos de arquivo. Todos scripts que encontrei funcionam.
Ai vai um que usei como base:
$pasta = "xml/";
$file = $pasta.$_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-Description: File Transfer');
//header('Content-Type: application/octet-stream');
header("Content-Length:".filesize($file));
header('Content-Disposition: attachment; filename="' . $file . '"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
//header('Pragma: no-cache');
// nesse momento ele le o arquivo e envia
$fp = fopen("$file", "rb");
fpassthru($fp);
fclose($fp);
Em localhost todos que eu testei funcionam. Mas quando hospedado no servidor(Locaweb - Hospedagem Linux) é feito o download, arquivos com o mesmo tamanho porém como é XML vem corrompido o final de sua estrutura.
Então percebi que sempre faltam os 3 últimos caracteres do arquivo, que seriam responsável por fechar a tag principal.
Já tentei alterar tudo quanto é HEADER, testei vários scripts e sempre o mesmo problema, em localhost funciona e quando hospedado não.
Após todas tentativas não consegui fazer com que ele faça o download do arquivo correto, então tive uma ideia :D
depois do READYFILE dei um echo "3ultimoscaracteres"; que faltavam para corrigir o arquivo.
E mais uma vez em localhost ele adicionou o que mandei escrever no echo e hospedado no locaweb ainda ele não escreve o echo =(
Alguém já enfrentou esse problema? pode ser algum header?
Carregando comentários...