Ir para conteúdo
Fórum Script Brasil
  • 0

Forçar download de um arquivo .PRN


Thiago Medeiros

Pergunta

Pessoal, boa tarde!

Estou trabalhando em um sistema web onde no servidor existe um diretório com dezenas de arquivos .PRN

Depois de algumas combinações de informações preciso fazer o download de um arquivo .PRN especíco. Porém, ao fazer isso o conteúdo do arquivo está vindo todo modificado. Na verdade está vindo um conteúdo CSS.

Abaixo segue o trecho do meu código:

$aquivoNome = $res["nome_pedido"].".PRN";

        // Verifica se o arquivo não existe
        if (!file_exists($aquivoNome)) {
            // Exiba uma mensagem de erro caso ele não exista
            exit;
        }
        // Configuramos os headers que serão enviados para o browser
        header('Content-Description: File Transfer');
        header('Content-Disposition: attachment; filename="'.$aquivoNome.'"');
        header('Content-Type: application/postscript');
        header('Content-Type: application/force-download');
        header("Content-Type: application/download");
        header('Content-Transfer-Encoding: binary');
        header('Content-Length: '.filesize($aquivoNome));
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Expires: 0');
        // Envia o arquivo para o cliente
        readfile($aquivoNome);

Abaixo segue o conteúdo original do .PRN:

--------------------------------------------------

N
Q200,24
q504

N
Q200,24
q504
A85,10,0,3,2,1,N,"026000000502"
B120,40,0,2,2,5,92,N,"026000000502"
A85,137,0,2,1,1,N,"Thalissa Rocha"
A100,125,3,1,1,1,N,"EXT"
A80,125,3,2,1,1,N,"USL"
A80,50,3,2,1,1,N,"99"
A62,155,3,3,1,1,N,"18/03/2014"
A380,155,3,2,1,1,N,"FRASCO"
A400,155,3,2,1,1,N,"URINA"
A420,155,3,2,1,1,N,"02600018-006"
P1

N
Q200,24
q504
A85,10,0,3,2,1,N,"026000000501"
B120,40,0,2,2,5,92,N,"026000000501"
A85,137,0,2,1,1,N,"Thalissa Rocha"
A100,125,3,1,1,1,N,"EXT"
A80,125,3,2,1,1,N,"USL"
A80,50,3,2,1,1,N,"99"
A62,155,3,3,1,1,N,"18/03/2014"
A380,155,3,2,1,1,N,"SORCO1"
A400,155,3,2,1,1,N,"SANGUE"
A420,155,3,2,1,1,N,"02600018-006"
P1
--------------------------------------------------

Ao terminar o download o conteúdo do arquivo é o seguinte:

--------------------------------------------------

<style>
/* MENSAGENS */
.msg_alerta {
background-image: url("funcao/mensagem/msg_alerta.gif");
background-repeat: no-repeat;
background-position: 15px center;
background-color: #FFFF7F;
border: 1px solid #B6B60C;
color: #B6B60C;
font-family: helvetica;
font-size: 12px;
font-weight: bold;
margin: 15px;
padding-left: 50px;
padding-top: 5px;
padding-bottom: 5px;
text-align: left;
width: 70%;
}
.msg_erro {
background-image: url("funcao/mensagem/msg_erro.gif");
background-repeat: no-repeat;
background-position: 15px center;
background-color: #FFD4D4;
border: 1px solid #D60202;
color: #D60202;
font-family: helvetica;

--------------------------------------------------

Continuando... Fiz uma pesquisa na internet e encontrei a lista de possíveis extenções suportadas pelo php para fazer o download de um arquivo:

http://blog.caixades...a-de-mime-types

Sei que uma alternativa seria ler o conteúdo do PRN do servidor e gerar um novo arquivo para download, mas isso não é nada decente no que diz respeito a uma implementação eficaz.

Alguém pode me dar uma luz?

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Cara coloca mais código seu por que isso:

<?php
$aquivoNome = 'teste.PRN';

// Configuramos os headers que serão enviados para o browser
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$aquivoNome.'"');
header('Content-Type: application/postscript');
header('Content-Type: application/force-download');
header("Content-Type: application/download");
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($aquivoNome));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Expires: 0');
// Envia o arquivo para o cliente
readfile($aquivoNome);

Funciona perfeitamente.

Abraços.

Tudo de Bom.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...