Problema após Download de Arquivos
Olá amigos, acontece o seguinte, tenho 3 arquivos .php, um pro usuario fazer o upload de arquivos pro servidor, outro que lista esses arquivos, e um ultimo que permite fazer o download deles, acontece que quando eu faço o upload deles pro server, vou lá na pasta eles tão lá bonitin e funcionando sem erro, quando eu faço o download, o conteudo dele acaba sendo danificada, não permitindo que eu abra o arquivo, seje .pdf, .jpg, .doc, com qualquer um deles após o download não abre, só que na pasta lá do server continuam funcionando normalmente, alguem sasbe me dizer o por que??
esse primeiro código é o arquivo upload.php responsavel pelo envio do mesmo
segue abaixo o código do listar.php que faz a listagem dos arquivos salvos
e por fim o baixar.php
esse primeiro código é o arquivo upload.php responsavel pelo envio do mesmo
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Upload de Arquivos</title>
<?php include'conexao.php' ?>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function()
{
$("#load").hide();
$("#up").click(function(){
$("#load").show();
})
}
)
</script>
</head>
<body>
<?php
if(isset ($_POST['acao']) && $_POST['acao'] == 'upload')
{
$pasta = 'arquivos/';
$tmp_name = $_FILES["arquivo"] ["tmp_name"];
$nome= $_FILES["arquivo"] ["name"];
$code = md5($nome).'-'.$nome;
$uploadFile = $pasta.$code;
if(move_uploaded_file($tmp_name, $uploadFile))
{
$insert = mysql_query("insert into arquivos (nome) values ('$code')");
$info = '<p>Arquivo Enviado com Sucesso</p>' ;
}
else
{
$info = '<p>Arquivo Não Enviado com Sucesso</p>' ;
}
}
if(isset($info))
{
echo"$info";
}
?>
<div id="load"><img src="images/load.gif"></div>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="arquivo" />
<input type="hidden" name="acao" value="upload" />
<input type="submit" value="Upload File" id="up" />
</form>
</body>
</html>
segue abaixo o código do listar.php que faz a listagem dos arquivos salvos
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Listar Arquivos Para Download</title>
<?php include"conexao.php" ?>
</head>
<body>
<?php
foreach(glob("arquivos/*.*") as $v)
{
$name = basename($v);
$thename = explode('-',$name);
$mostra = $thename['1'];
echo'<a href="baixar.php?file='.$name.'">'.$mostra.'</a><br>';
}
?>
</body>
</html>
e por fim o baixar.php
<?php
$pasta = 'arquivos';
if(isset($_GET['file']) && file_exists("{$pasta}/".$_GET['file']))
{
$file = $_GET['file'];
$type = filetype("{$pasta}/{$file}");
$size = filesize("{$pasta}/{$file}");
header("Content-Description:File Transfer");
header("Content-Type:($type)");
header("Content-lenght:($size)");
header("Content-Disposition: attachment; filename=$file");
readfile("{$pasta}/{$file}");
exit;
}
?>
Eduardo Oliveira
Curtidas 0
Respostas
Bruno Xavier
15/07/2011
tente esse código abaixo:
header('Content-Description: File Transfer'); header('Content-Disposition: attachment; filename="'.$pasta.'/'.$file.'"'); header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . filesize($pasta.'/'.$file)); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Expires: 0');
readfile($pasta.'/'.$file);
GOSTEI 0
Eduardo Oliveira
15/07/2011
Valeu Bruno brigadão pela ajuda....
GOSTEI 0