Problema após Download de Arquivos

15/07/2011

0

PHP

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

<!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

Eduardo Oliveira

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

26/07/2011

Eduardo Oliveira

Valeu Bruno brigadão pela ajuda....
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar