Forçar Download Diversos
Bom dia a Todos,
Já tentei de varias formas, existem N maneiras de fazer, porém não achei a certa no meu caso.
Montei uma página de Download de arquivos, porém cada usuario tem sua configuração de browser, então pensei em criar uma função para forçar o download do arquivo para não abrir na página atual.
Problema: Ao fazer Download do .Exe e .PDF, funciona normal, porém ao fazer dowload de arquivos .XML ele esta alterando um pouco do arquivo, ex: O arquivo inicia com 4 linhas em brancas e no final do arquivo esta faltando o resto dos dados.
Após fazer N testes, percebi que o problema esta quando eu faço qualquer tipo de Include, o include que estou fazendo e de conexão com o BD, é um include simples para conexão sem mais nada, me aconselharam a usar Ob_start();, testei de N maneiras e não esta funcionando.
Criei um ambiente de teste para visualização, são dois arquivos, testedown.php que por uma função javascript chama o download do arquivo dentro de um iframe escondido, e down2.php para realização do download.
**
testedown.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script language="javascript">
function tryToDownload(url)
{
oIFrm = document.getElementById('myIFrm');
oIFrm.src = url;
//alert(url);
}
//window.onload = setTimeout('tryToDownload("down2.php?idconsulta=1&tparquivo=xml")', 1*1000);
window.onload = setTimeout('tryToDownload("down2.php?idconsulta=1&tparquivo=1")', 1*1000);
</script>
</head>
<body>
<h1>DontChange the Location</h1>
<iframe id="myIFrm" src="" style="visibility:hidden">
</iframe>
</body>
</html>
down2.php
<?php
include("../../includes/conexao.php");
$link = "../arquivos/clientes/seccon/xml/35090904506658000120550000000031660070042044-nfe.xml";
if(file_exists($link)){
header ("Content-Disposition: attachment; filename=".$link."");
header ("Content-Type: application/xml");
header ("Content-Length: ".filesize($link));
ob_start(readfile($link));
ob_end_flush();
}
?>
Alguém tem alguma sugestão ?
Discussão (1)
Carregando comentários...