Problema após Download de Arquivos
15/07/2011
0
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
Curtir tópico
+ 0
Responder
Posts
23/07/2011
Bruno Xavier
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);
Responder
Clique aqui para fazer login e interagir na Comunidade :)