Bom dia a todos!
Fucei o fórum de ponta cabeça e não achei uma solução para o problema…se já tiver uma resposta me desculpem!
O que quero:
- Fazer o download do XML da NF-e que está armazenado no banco de dados.
Como estou fazendo:
- No SC criei uma tela do tipo Consulta onde está sendo listada as minhas NF-e. Aí possuo uma coluna chamada XML, onde criei a seguinte lógica (inclusive esta solução foi encontrada aqui no fórum) pra realizar o download do arquivo XML:
[ul][li]Evento onRecord:
[list]
[li]
$var_lnkXML = ‘index.php?lnkXML=’.{chave_acesso};
{lnkXML} = “XML”;
[/li]
[/list]
[/li][/ul]
[br]
[ul][li]onScriptInit:
[list]
[li]Recupero o XML da NF-e, salvo ele numa pasta temporária (já verifiquei este arquivo antes de excluir e está salvando corretamente, ou seja, sem sujeira HTML), utilizo uma rotina chamada output_file (que o nosso amigo Haroldo disponibilizou no fórum a um tempo) e depois excluo esse arquivo.[/li]
[/list]
[/li][/ul]
[br]
[ul][li]Programação -> Métodos PHP -> função output_file:[/li][list]
[li]
$file_extension = strtolower(substr(strrchr($file,"."), 1));
if( $file_extension == “php” ){
die(“Arquivo Inválido para Download.”);
}
if( !is_readable($file) ){
die(“Arquivo não encontrado!”);
}
$size = filesize($file);
$name = rawurldecode($name);
$known_mime_types = array(
“pdf” => “application/pdf”,
“txt” => “text/plain”,
“html” => “text/html”,
“htm” => “text/html”,
“exe” => “application/octet-stream”,
“zip” => “application/zip”,
“doc” => “application/msword”,
“xls” => “application/vnd.ms-excel”,
“ppt” => “application/vnd.ms-powerpoint”,
“gif” => “image/gif”,
“png” => “image/png”,
“jpeg”=> “image/jpg”,
“jpg” => “image/jpg”,
“php” => “********”
);
if( $mime_type == “” ){
if( array_key_exists($file_extension, $known_mime_types) ){
$mime_type = $known_mime_types[$file_extension];
}
else{
$mime_type = “application/force-download”;
}
}
@ob_end_clean();
if( ini_get(“zlib.output_compression”) ){
ini_set(“zlib.output_compression”, “Off”);
}
header(“Content-Type: “.$mime_type.”;name=’”.$file."’");
header(“Content-Disposition: attachment; filename=”.$name);
header(“Content-Transfer-Encoding: binary”);
header(“Accept-Ranges: bytes”);
header(“Cache-control: private”);
header(“Pragma: private”);
header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
if( isset($_SERVER[“HTTP_RANGE”]) ){
list($a, $range) = explode("=",$_SERVER[“HTTP_RANGE”],2);
list($range) = explode(",",$range,2);
list($range, $range_end) = explode("-", $range);
$range = intval($range);
if( !$range_end ){
$range_end = $size - 1;
}
else{
$range_end = intval($range_end);
}
$new_length = $range_end-$range + 1;
header("HTTP/1.1 206 Partial Content");
header("Content-Length: $new_length");
header("Content-Range: bytes $range-$range_end/$size");
}
else{
$new_length = $size;
header("Content-Length: ".$size);
}
$chunksize = 1 * (1024 * 1024);
$bytes_send = 0;
if ( $file = fopen($file, “r”) ){
if( isset($_SERVER[“HTTP_RANGE”]) ){
fseek($file, $range);
}
while( !feof($file) && (!connection_aborted()) && ($bytes_send<$new_length) ){
//ob_clean();
//flush();
$buffer = fread($file, $chunksize);
print($buffer);
flush();
$bytes_send += strlen($buffer);
}
fclose($file);
}
else{
die(“Erro - Não foi possível abrir arquivo.”);
}
[/li]
[/list][/ul]
Problema encontrado:
- Depois de fazer o download do arquivo XML e abrir ele, além de vir os dados da NF-e, está vindo sujeira da página em HTML, conforme exemplo abaixo (trecho retirado do arquivo XML depois de realizado o download):
3DQEBCwUAA4ICAQByX66p6zg1IuxHd/B7HJ1Whyai0SAS0Mp3kXsQcu36i8uiiFzNQEPtBpwfKisvMyw6rEWHp09D8H7Xw95VRdk2YXkcjAM/Y5IdROWO0/j1P1iQCt+pDPiQt7wqT/9lWE1jjfF/gis1Ohgy8PG+3ChUAuN9gbZdpi83fCzLzCDZRd06GK4qKocLQVav9SOXJpvfUVZqy3WduUDIqaDYDXu/M9E/Gc82CNHK8VyLpCTP+deFjvo8QP9vDLzj+5GcBfI6pb5UQMDjLGfakFZTKfQ3oLGGxWLJkZfhi8etgPu9tQUrfWQrePrV4XXFsFwiGuYhm5vrYW9uROzlNWDxibOEMpjIQeD5sTyeqZzJXUNE9Vx4oi8P0UQFIZeb+I/pQ1rbCde9YVWITsNZOSGLuBK+W42YKx/kKpK45LYSjf7ePVFAkLoUkl3uEfeOfR64YYP/sUc69RPRPL92epWhGjieUnkEZvTudD5Kvf49F30IsXHeU6lw5q5ebjNZgdgLi3U1RfKzvRsU90nctGptL59h9cWnhY17aO68XnK4woZTLOFExLjo5OvYg5GLcvGH/IW4aI5lVhl0qF/JQ7aB+gP0YTuBpTfdg5xyTEaQHOUsv02jXNgVLsH69NOmWwvlQD++0YbcdfxrtKsk8F098kvlIEigZwkcR8vi8nUfYrPtoA==1NFEPE_P_15.11.05.119261703112750070001325500100001001416128867692017-03-29T12:35:12-03:00126170016883554QDydiTwofN9TJ+9b12rzbxG4GLI=100Autorizado o uso da NF-e
Consulta - Notas Fiscais Sa e Entrada-(Dev.Cli)Obs.:
Este problema ocorre na primeira vez q realizo o download, se eu fizer o download novamente da mesma NF-e, o arquivo vem certinho, sem sujeira alguma de HTML.
Assim, vasculhei tudo quanto é tipo de solução na internet, já estou de cabelo em pé…kkkkkkkkkkkk…O que tiverem de sugestão e ajuda é mto bem vindo.
Desde já agradeço a todos!