batistavn15 Posted May 30, 2013 at 01:16 PM Report #509790 Posted May 30, 2013 at 01:16 PM Boas pessoal, tenho uma grande duvida e precisava da vossa ajuda, tenho ficheiros na BD mysql, no phpmyadmin, e é o seguinte quando realizo o download o ficheiro em .txt vem com códigos em vez do conteudo que estava lá dentro, e um ficheiro .pdf diz que o ficheiro foi danificado. Agradecia imenso a vossa ajuda, pois é de um estado urgente. Páginas: Adicionar ficheiro: <?php require("dbconnect.inc.php"); $arquiivo = $_FILES['arquivo']['tmp_name']; $tamanho = $_FILES['arquivo']['size']; $tipo = $_FILES['arquivo']['type']; $nome = $_FILES['arquivo']['name']; $titulo = $_POST['titulo']; if ( $arquivo != "none" ) { $nome = $_FILES['arquivo']['name']; $arquiivo = $_FILES['arquivo']['tmp_name']; $fp = fopen($arquivo, "r"); $conteudo = fread($fp, filesize($tamanho)); $conteudo = addslashes($conteudo); fclose($fp); if(!get_magic_quotes_gpc()) { $nome = addslashes($nome); } $qry = mysql_query ("INSERT INTO arquivos VALUES ('','$nome','$titulo','$conteudo','$tamanho', '$tipo')"); if(mysql_affected_rows($conn) > 0) print "O arquivo foi gravado na base de dados."; else print "Não foi possível gravar o arquivo na base de dados."; } else print "Não foi possível carregar o arquivo para o servidor."; ?> Mostrar ficheiros: !-- ...código anterior --> <form enctype="multipart/form-data" action="guardar_arquivo.php" method="post"> Descricao <input type="text" name="titulo" size="30"> Arquivo <input type="file" name="arquivo"> <input type="submit" value="Enviar arquivo"> </form> <!-- ...código posterior --> <tbody> <?php require("dbconnect.inc.php"); $qry = "SELECT * FROM arquivos"; $res = mysql_query($qry); while($fila = mysql_fetch_array($res)) { echo "<tr>"; echo "<td>". $fila['titulo']."</td>"; ?> <td><a href="baixar_arquivo.php?nid=<?php echo $fila['id']; ?>">Fazer Download</a></td> <?php } ?> </tbody> Para download: <?php require("dbconnect.inc.php"); $id = @($_GET["nid"]); if($id != "") { $result = mysql_query("select nome, conteudo, tamanho, tipo From arquivos where id='$id'") or die('Error, query failed'); list($name, $titulo, $conteudo, $size, $type) = mysql_fetch_array($result); header("Content-length: $size"); header("Content-type: $type"); header("Content-Disposition: attachment; filename=$name"); echo $conteudo; } else{ } ?>
HappyHippyHippo Posted May 30, 2013 at 01:34 PM Report #509799 Posted May 30, 2013 at 01:34 PM estão os teu ficheiros PHP gravados em UTF-8 com BOM ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
bioshock Posted May 30, 2013 at 01:35 PM Report #509801 Posted May 30, 2013 at 01:35 PM Reparei que o teu código é idêntico a: http://mirificampress.com/permalink/saving_a_file_into_mysql, mas faltam-te aí passos. O problema deve estar na introdução do ficheiro na base de dados.
batistavn15 Posted May 30, 2013 at 01:36 PM Author Report #509802 Posted May 30, 2013 at 01:36 PM estão os teu ficheiros PHP gravados em UTF-8 com BOM ? O meu código para criar a BD foi: CREATE TABLE arquivos( id int not null auto_increment primary key, nome varchar(50), titulo varchar(50), conteudo mediumblob, tamanho int not null, tipo varchar(50));
HappyHippyHippo Posted May 30, 2013 at 01:38 PM Report #509807 Posted May 30, 2013 at 01:38 PM isso não responde à minha questão, nem de perto nem de longe ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
batistavn15 Posted May 30, 2013 at 01:39 PM Author Report #509808 Posted May 30, 2013 at 01:39 PM (edited) Reparei que o teu código é idêntico a: http://mirificampress.com/permalink/saving_a_file_into_mysql, mas faltam-te aí passos. O problema deve estar na introdução do ficheiro na base de dados. Por acaso não foi a fonte que segui isso não responde à minha questão, nem de perto nem de longe ... Então não percebi a questão Edited May 30, 2013 at 01:39 PM by batistavn15
HappyHippyHippo Posted May 30, 2013 at 01:49 PM Report #509821 Posted May 30, 2013 at 01:49 PM eu perguntei : os teus ficheiros PHP estão gravados em que codificação e se essa codificação é UTF-8 com BOM IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
batistavn15 Posted May 30, 2013 at 02:07 PM Author Report #509837 Posted May 30, 2013 at 02:07 PM eu perguntei : os teus ficheiros PHP estão gravados em que codificação e se essa codificação é UTF-8 com BOM UTF-8 Sem BOM
HappyHippyHippo Posted May 30, 2013 at 02:13 PM Report #509841 Posted May 30, 2013 at 02:13 PM UTF-8 Sem BOM ok ... vamos ver se o problema é do addslashes: // $conteudo = addslashes($conteudo); $conteudo = base64_encode($conteudo); $qry = mysql_query ("INSERT INTO arquivos VALUES ('','$nome','$titulo','$conteudo','$tamanho', '$tipo')"); header("Content-length: $size"); header("Content-type: $type"); header("Content-Disposition: attachment; filename=$name"); // echo $conteudo; echo base64_decode($conteudo); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
batistavn15 Posted May 30, 2013 at 02:21 PM Author Report #509849 Posted May 30, 2013 at 02:21 PM Não, continua a fazer o mesmo
HappyHippyHippo Posted May 30, 2013 at 02:31 PM Report #509857 Posted May 30, 2013 at 02:31 PM testas então isto: <?php // apaga tudo antes do "<?php" mesmo os espaços !!! require("dbconnect.inc.php"); $id = @($_GET["nid"]); if($id != "") { $result = mysql_query("select nome, conteudo, tamanho, tipo From arquivos where id='$id'") or die('Error, query failed'); list($name, $titulo, $conteudo, $size, $type) = mysql_fetch_array($result); /* header("Content-length: $size"); header("Content-type: $type"); header("Content-Disposition: attachment; filename=$name"); echo $conteudo; */ } else{ } // apaga tudo depois do "?>" mesmo os espaços !!! ?> e diz se aparece alguma coisa ou se resposta tem mesmo conteúdo (usa os development tools do teu browser) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
batistavn15 Posted May 30, 2013 at 02:38 PM Author Report #509865 Posted May 30, 2013 at 02:38 PM Assim dá logo erro, nem download é efetuado
HappyHippyHippo Posted May 30, 2013 at 02:41 PM Report #509869 Posted May 30, 2013 at 02:41 PM mas que erro aparece ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
batistavn15 Posted May 30, 2013 at 02:58 PM Author Report #509879 Posted May 30, 2013 at 02:58 PM Não conseguiu aceder fazer download do ficheiro
HappyHippyHippo Posted May 30, 2013 at 03:01 PM Report #509882 Posted May 30, 2013 at 03:01 PM (edited) ... copy paste do que te aparece ... eu não sou vidente, nem tenho o teamviewer ligado ao teu computador !!! Edited May 30, 2013 at 03:02 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
batistavn15 Posted May 30, 2013 at 03:49 PM Author Report #509912 Posted May 30, 2013 at 03:49 PM Notice: Undefined offset: 4 in C:\wamp\www\Download\baixar_arquivo.php on line 10 Função: main
bioshock Posted May 30, 2013 at 04:05 PM Report #509919 Posted May 30, 2013 at 04:05 PM Já experimentaste aquele link que te dei?
batistavn15 Posted May 30, 2013 at 04:09 PM Author Report #509922 Posted May 30, 2013 at 04:09 PM Já experimentaste aquele link que te dei? Sim já, ajustei e faz a mesma coisa... É algo que estou a fazer de errado e não sei o quê
HappyHippyHippo Posted May 30, 2013 at 04:23 PM Report #509937 Posted May 30, 2013 at 04:23 PM $result = mysql_query("select nome, <----------- 1 conteudo, <----------- 2 tamanho, <----------- 3 tipo <----------- 4 From arquivos where id='$id'") or die('Error, query failed'); list($name, // <----------- 1 $titulo, // <----------- 2 $conteudo, // <----------- 3 $size, // <----------- 4 $type) // <----------- 5 = mysql_fetch_array($result); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
batistavn15 Posted May 30, 2013 at 04:27 PM Author Report #509939 Posted May 30, 2013 at 04:27 PM Faz o download mas dentro do ficheiro vem codigo novamente
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now