Autor Tópico: Documento(Nome do Arquivo) - Abrir no navegador[RESOLVIDO]  (Lida 1932 vezes)

joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Documento(Nome do Arquivo) - Abrir no navegador[RESOLVIDO]
« Online: Junho 10, 2015, 11:52:52 am »
Pessoal fiz um formulário contendo o campo "Documento(Nome do Arquivo)", consegui fazer o upload do arquivo, mas quando eu faço uma grid(consulta) destes, ao clicar no link ele vai para baixar, eu queria que abrisse no navegador, alguém pode me ajudar com uma solução ou um paleativo.

Grato!
« Última modificação: Junho 11, 2015, 09:57:49 am por joeltonsilva »

Nycollas Eufrasio

  • Novato
  • *
  • Mensagens: 19
    • Array Service Informatica
Re:Documento(Nome do Arquivo) - Abrir no navegador
« Responder #1 Online: Junho 10, 2015, 12:33:26 pm »
Pessoal fiz um formulário contendo o campo "Documento(Nome do Arquivo)", consegui fazer o upload do arquivo, mas quando eu faço uma grid(consulta) destes, ao clicar no link ele vai para baixar, eu queria que abrisse no navegador, alguém pode me ajudar com uma solução ou um paleativo.

Grato!

Então, eu fiz algo parecido, só que ficou meio um "Ajuste Tecnico" mas funcionou rsrs


Criei uma tela intermediaria entre o Grid e o navegador, uma aplicação blank que continha apenas o ID do registro, fazia uma busca no banco de dados e jogava na tela.
Da uma olhada no codigo que fica no onExecute da aplicação blank:


$id = [VAR_NOT];  //VARIAVEL COM ID


//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT ANEXO_FILE FROM arquivos WHERE ID=".$id;
sc_lookup(rs,$sql);

//SETA HEADER QUE O ARQUIVO É PDF
header('Content-Type: application/pdf');

//PRINTA NA TELA
print ({rs[0][0]});







joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Documento(Nome do Arquivo) - Abrir no navegador
« Responder #2 Online: Junho 10, 2015, 04:07:24 pm »
Pessoal fiz um formulário contendo o campo "Documento(Nome do Arquivo)", consegui fazer o upload do arquivo, mas quando eu faço uma grid(consulta) destes, ao clicar no link ele vai para baixar, eu queria que abrisse no navegador, alguém pode me ajudar com uma solução ou um paleativo.


Grato!

Então, eu fiz algo parecido, só que ficou meio um "Ajuste Tecnico" mas funcionou rsrs


Criei uma tela intermediaria entre o Grid e o navegador, uma aplicação blank que continha apenas o ID do registro, fazia uma busca no banco de dados e jogava na tela.
Da uma olhada no codigo que fica no onExecute da aplicação blank:


$id = [VAR_NOT];  //VARIAVEL COM ID


//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT ANEXO_FILE FROM arquivos WHERE ID=".$id;
sc_lookup(rs,$sql);

//SETA HEADER QUE O ARQUIVO É PDF
header('Content-Type: application/pdf');

//PRINTA NA TELA
print ({rs[0][0]});








Tentei utilizar, mas não deu certo, fiz umas modificações para me adequar, mas algo está errado, pois ele abre dizendo "Falha ao Carregar pdf", lembrando que não guardo o arquivo no banco, só o nome, eu guardo dentro da pasta os documentos.

$id = [VAR_NOT];  //VARIAVEL COM ID


//VARIÁVEL $caminho tem  lugar onde guarda os arquivos
$caminho = $this->Ini->path_doc;

//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT nome_arquivo FROM documento WHERE id=".$id;
sc_lookup(rs,$sql);

//SETA HEADER QUE O ARQUIVO É PDF
header('Content-Type: application/pdf');

//LOCALIZA O NOME DO ARQUIVO NO BANCO
$arquivo = ({rs[0][0]});

$completo = $caminho."/".$arquivo;

echo $completo;
« Última modificação: Junho 10, 2015, 04:10:16 pm por joeltonsilva »

Nycollas Eufrasio

  • Novato
  • *
  • Mensagens: 19
    • Array Service Informatica
Re:Documento(Nome do Arquivo) - Abrir no navegador
« Responder #3 Online: Junho 11, 2015, 08:30:27 am »

Printa o Binario do arquivo que o navegador vai entender por causa do header:


$id = [VAR_NOT];  //VARIAVEL COM ID


//VARIÁVEL $caminho tem  lugar onde guarda os arquivos
$caminho = $this->Ini->path_doc;

//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT nome_arquivo FROM documento WHERE id=".$id;
sc_lookup(rs,$sql);

//SETA HEADER QUE O ARQUIVO É PDF
header('Content-Type: application/pdf');

//LOCALIZA O NOME DO ARQUIVO NO BANCO
$arquivo = ({rs[0][0]});

$completo = $caminho."/".$arquivo;

//PEGA O BINARIO

$fp      = fopen($completo, 'rb');
$content = fread($fp, filesize($completo));


print($content);


joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Documento(Nome do Arquivo) - Abrir no navegador
« Responder #4 Online: Junho 11, 2015, 09:57:15 am »

Printa o Binario do arquivo que o navegador vai entender por causa do header:


$id = [VAR_NOT];  //VARIAVEL COM ID


//VARIÁVEL $caminho tem  lugar onde guarda os arquivos
$caminho = $this->Ini->path_doc;

//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT nome_arquivo FROM documento WHERE id=".$id;
sc_lookup(rs,$sql);

//SETA HEADER QUE O ARQUIVO É PDF
header('Content-Type: application/pdf');

//LOCALIZA O NOME DO ARQUIVO NO BANCO
$arquivo = ({rs[0][0]});

$completo = $caminho."/".$arquivo;

//PEGA O BINARIO

$fp      = fopen($completo, 'rb');
$content = fread($fp, filesize($completo));


print($content);



PEREFEITO!!!!!!!!!!!!!
Valew cara o código ficou show de bola!

joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Documento(Nome do Arquivo) - Abrir no navegador[RESOLVIDO]
« Responder #5 Online: Junho 15, 2015, 11:34:30 am »
Pessoal fiz um formulário contendo o campo "Documento(Nome do Arquivo)", consegui fazer o upload do arquivo, mas quando eu faço uma grid(consulta) destes, ao clicar no link ele vai para baixar, eu queria que abrisse no navegador, alguém pode me ajudar com uma solução ou um paleativo.

Grato!

Então, eu fiz algo parecido, só que ficou meio um "Ajuste Tecnico" mas funcionou rsrs


Criei uma tela intermediaria entre o Grid e o navegador, uma aplicação blank que continha apenas o ID do registro, fazia uma busca no banco de dados e jogava na tela.
Da uma olhada no codigo que fica no onExecute da aplicação blank:


$id = [VAR_NOT];  //VARIAVEL COM ID


//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT ANEXO_FILE FROM arquivos WHERE ID=".$id;
sc_lookup(rs,$sql);

//SETA HEADER QUE O ARQUIVO É PDF
header('Content-Type: application/pdf');

//PRINTA NA TELA
print ({rs[0][0]});









Nycollas,

Estou querendo melhorar o script, estava tentando fazer que este script abra video mp3 por exemplo, tentei colocar um if para o header, mas não deu certo, nem sei se posso fazer isto, tem uma idéia?


$id = [VAR_NOT];  //VARIAVEL COM ID


//VARIÁVEL $caminho tem  lugar onde guarda os arquivos
$caminho = $this->Ini->path_doc;

//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT nome_arquivo FROM documento WHERE id=".$id;
sc_lookup(rs,$sql);

//LOCALIZA O NOME DO ARQUIVO NO BANCO
$arquivo_nome = ({rs[0][0]});
$arquivo = $arquivo_nome;





//PEGA O 4 ÚLTIMOS DÍGITOS DO NOME DO ARQUIVO PARA IDENTIFICAR EXTENSSÃO
$pdf = ".pdf";




$arquivo = $_FILES['arquivo'];

$final = $arquivo;
$final = substr($final,(strlen($final)-4),strlen($final));

if($final = $pdf)
   {
      header('Content-Type: application/pdf');
   }




$completo = $caminho."/".$arquivo_nome;

//PEGA O BINARIO

$fp      = fopen($completo, 'rb');
$content = fread($fp, filesize($completo));


print($content);


//VARIÁVEL $caminho tem  lugar onde guarda os arquivos
$caminho = $this->Ini->path_doc;

//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT nome_arquivo FROM documento WHERE id=".$id;
sc_lookup(rs,$sql);

//SETA HEADER QUE O ARQUIVO É PDF
header('Content-Type: application/pdf');

//LOCALIZA O NOME DO ARQUIVO NO BANCO
$arquivo = ({rs[0][0]});

$completo = $caminho."/".$arquivo;

//PEGA O BINARIO

$fp      = fopen($completo, 'rb');
$content = fread($fp, filesize($completo));


print($content);

Nycollas Eufrasio

  • Novato
  • *
  • Mensagens: 19
    • Array Service Informatica
Re:Documento(Nome do Arquivo) - Abrir no navegador[RESOLVIDO]
« Responder #6 Online: Junho 15, 2015, 12:38:35 pm »
Eu tenho uma ideia de como forçar o download, não sei se consegueria fazer ele reproduzir, serveria para você?

joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Documento(Nome do Arquivo) - Abrir no navegador[RESOLVIDO]
« Responder #7 Online: Junho 15, 2015, 04:23:41 pm »
Eu tenho uma ideia de como forçar o download, não sei se consegueria fazer ele reproduzir, serveria para você?

Me passa a idéia que posso tentar adaptar

Nycollas Eufrasio

  • Novato
  • *
  • Mensagens: 19
    • Array Service Informatica
Re:Documento(Nome do Arquivo) - Abrir no navegador[RESOLVIDO]
« Responder #8 Online: Junho 16, 2015, 09:47:08 am »

Dei uma estudada ontem e consegui reproduzir um video MP4, só não consegui reproduzir o audio MP3

Código: [Selecionar]

<?php

$arquivo 
"teste.mp4"//VIDEO
//$arquivo = "teste.mp3"; //AUDIO
//$arquivo = "teste.pdf"; // PDF
//$arquivo = "teste.xls"; //ARQUIVO QUALQUER QUE NAO REPRODUZ


$completo $arquivo// CAMINHO COMPLETO

//TIRA O NOME FINAL DO ARQUIVO
$final substr($arquivo,(strlen($arquivo)-4),strlen($arquivo));



if(
$final == ".pdf"){
   
    
//É UM PDF
    
header('Content-Type: application/pdf');

    
//PEGA O BINARIO

    
$fp      fopen($completo'rb');
    
$content fread($fpfilesize($completo));

    print(
$content);

   
}else if(
$final == ".mp3"){

     
// É UM MP3
     
header('Content-Type: audio/mp3');
     
header("Content-Disposition: attachment; filename='".$completo."'");
     
header('Content-length: ' filesize($completo));

      
//PEGA O BINARIO

    
$fp      fopen($completo'rb');
    
$content fread($fpfilesize($completo));

    print(
$content);

  
 
}else if(
$final == ".mp4"){

     
// É UM MP4
     
header('Content-Type: video/mp4');
     
//header("Content-Disposition: attachment; filename='".$completo."'"); //ESSE FORÇA DOWNLOAD, POR CAUSA DO attachment
     
header("Content-Disposition: filename='".$completo."'"); //  ESSE FAZ O VIDEO RODAR NO NAVEGADOR SE POSSIVEL
     
header('Content-length: ' filesize($completo));
   
     
    
//PEGA O BINARIO

    
$fp      fopen($completo'rb');
    
$content fread($fpfilesize($completo));

    print(
$content);

 
}else{

  
//Extensão não compativel
  
echo("Nao e Possivel Reproduzir o Arquivo");


}



?>




joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Documento(Nome do Arquivo) - Abrir no navegador[RESOLVIDO]
« Responder #9 Online: Junho 16, 2015, 02:41:45 pm »

Dei uma estudada ontem e consegui reproduzir um video MP4, só não consegui reproduzir o audio MP3

Código: [Selecionar]

<?php

$arquivo 
"teste.mp4"//VIDEO
//$arquivo = "teste.mp3"; //AUDIO
//$arquivo = "teste.pdf"; // PDF
//$arquivo = "teste.xls"; //ARQUIVO QUALQUER QUE NAO REPRODUZ


$completo $arquivo// CAMINHO COMPLETO

//TIRA O NOME FINAL DO ARQUIVO
$final substr($arquivo,(strlen($arquivo)-4),strlen($arquivo));



if(
$final == ".pdf"){
   
    
//É UM PDF
    
header('Content-Type: application/pdf');

    
//PEGA O BINARIO

    
$fp      fopen($completo'rb');
    
$content fread($fpfilesize($completo));

    print(
$content);

   
}else if(
$final == ".mp3"){

     
// É UM MP3
     
header('Content-Type: audio/mp3');
     
header("Content-Disposition: attachment; filename='".$completo."'");
     
header('Content-length: ' filesize($completo));

      
//PEGA O BINARIO

    
$fp      fopen($completo'rb');
    
$content fread($fpfilesize($completo));

    print(
$content);

  
 
}else if(
$final == ".mp4"){

     
// É UM MP4
     
header('Content-Type: video/mp4');
     
//header("Content-Disposition: attachment; filename='".$completo."'"); //ESSE FORÇA DOWNLOAD, POR CAUSA DO attachment
     
header("Content-Disposition: filename='".$completo."'"); //  ESSE FAZ O VIDEO RODAR NO NAVEGADOR SE POSSIVEL
     
header('Content-length: ' filesize($completo));
   
     
    
//PEGA O BINARIO

    
$fp      fopen($completo'rb');
    
$content fread($fpfilesize($completo));

    print(
$content);

 
}else{

  
//Extensão não compativel
  
echo("Nao e Possivel Reproduzir o Arquivo");


}



?>




Sobre esta questão do áudio consegui resolver mudando o
"header('Content-Type: audio/mpeg');" // Para MP3
"header('Content-Type: audio/ogg');" // Para ogg
"header('Content-Type: audio/wav');" // Para wav

Acho que conseguimos fechar a solução!!!! Você é o cara...

danillo.sdd

  • Novato
  • *
  • Mensagens: 30
    • Email
Re:Documento(Nome do Arquivo) - Abrir no navegador[RESOLVIDO]
« Responder #10 Online: Abril 11, 2016, 07:51:08 pm »
A função:


$id = [VAR_NOT];  //VARIAVEL COM ID


//VARIÁVEL $caminho tem  lugar onde guarda os arquivos
$caminho = $this->Ini->path_doc;

//FAZ O LOOKUP E TRAZ O ARQUIVO EM BINARIO
$sql = "SELECT nome_arquivo FROM documento WHERE id=".$id;
sc_lookup(rs,$sql);

//SETA HEADER QUE O ARQUIVO É PDF
header('Content-Type: application/pdf');

//LOCALIZA O NOME DO ARQUIVO NO BANCO
$arquivo = ({rs[0][0]});

$completo = $caminho."/".$arquivo;

//PEGA O BINARIO

$fp      = fopen($completo, 'rb');
$content = fread($fp, filesize($completo));


print($content);


funcionou perfetamente.

O Problema e quando o PDF e grande ou tem muitas paginas, o navegador não consegue carregar..