Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite pessoal.
Estou tentando força um download. Até então está beleza, quando clica no link está aparecendo a caixa para download. Porém, quando baixa, vem em média 2kb (e os arquivos tem mais ou menos 60 mega). E não abre o arquivo.
Vejam o código:
link:
<li><strong>" . $cont . " - </strong><a href=\"baixar_logado.php?id=".$id_codificado."&id_arquivo=".$rs->id."\" title=\"" . $rs->titulo . "\">" . $rs->titulo . "</a></li>
baixar_logado.php
<?php
require_once 'cabecalho.php';
require_once 'topo.php';
$id = base64_decode($_GET['id']);
if (!isset($_SESSION['usuario'])) {
header("Location:./");
} else {
// Define o tempo máximo de execução em 0 para as conexões lentas
set_time_limit(0);
$id = $_GET['id'];
$id_decodificado = base64_decode($id);
$id_arquivo = $_GET['id_arquivo'];
$sql = "SELECT * FROM arquivos WHERE id=".$id_arquivo;
$qr = mysql_query($sql) or die(mysql_error());
$rs = mysql_fetch_object($qr);
$aquivoNome = $rs->arquivo;
$arquivoLocal = "uploads/" . $id_decodificado . "/".$aquivoNome;
// Verifica se o arquivo não existe
if (!file_exists($arquivoLocal)) {
echo "<script type=\"text/javascript\">alert('Arquivo não encontrado');</script>";
exit;
}
// Definimos o novo nome do arquivo
$novoNome = $rs->arquivo;
// Configuramos os headers que serão enviados para o browser
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$novoNome.'"');
header('Content-Type: application/octet-stream');
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);
}
?>
Obrigado pela atenção.
Carregando comentários...