gcslds 0 Denunciar post Postado Abril 21, 2012 Olá pessoal! Estou criando um sistema simples de upload de arquivos utilizando como base de dados o MySQL. A conexão com a base de dados está ok, porém apresenta erro após inserir o arquivo na base de dados. Também não é possivel listar os arquivos inseridos. Se alguém tiver como ajudar...Agradeço! Segue o código: Página pag1.html(Formulário que seleciona o arquivo para inserir no BD) <form enctype="multipart/form-data" action="upload.php" method="post"> Descrição <input type="text" name="titulo" size="30"> Arquivo <input type="file" name="arquivo"> <input type="submit" value="Enviar arquivo"> </form> upload.php(Conecta e faz o upload do arquivo selecionado) <?php require("/config/conecta.php"); $arquiivo = $_FILES["arquivo"]["tmp_name"]; $tamanho = $_FILES["arquivo"]["size"]; $tipo = $_FILES["arquivo"]["type"]; $nome = $_FILES["arquivo"]["name"]; $titulo = $_POST["titulo"]; if( $arquivo != "none" ) { $fp = fopen($arquivo, "rb"); $conteudo = fread($fp, $tamanho); $conteudo = addslashes($conteudo); fclose($fp); $qry = "INSERT INTO upload VALUES (0,'$nome','$conteudo','','','','$tipo','','$titulo','')"; mysql_query($qry); 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."; ?> conecta.php(Conecta ao MySQL) <?php $con = mysql_connect('localhost', 'admin', 'admin'); if (!$con) die ("<h1>Falha na conexão com o Banco de Dados!</h1>"); // Caso a conexão seja aprovada, então conecta o Banco de Dados. $db = mysql_select_db("uniupload"); ?> listaArquivos.php(Lista arquivos do DB) <?php require("/config/conecta.php"); $qry = "SELECT * FROM arquivos"; $res = mysql_query($qry); while($fila = mysql_fetch_array($res)) { print "$fila[titulo] <br> $fila[nome] ($fila[tipo]) <br> <a href='baixar_arquivo.php?id=$fila[id]'>Fazer Download</a> <br> <br>"; } ?> Este é o SQL da base de dados... CREATE TABLE IF NOT EXISTS `upload` ( `id` int(10) NOT NULL AUTO_INCREMENT, `nome` varchar(50) DEFAULT NULL, `conteudo` mediumblob, `criador` varchar(50) DEFAULT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, `tipo` varchar(50) DEFAULT NULL, `size` int(10) DEFAULT NULL, `titulo` varchar(50) DEFAULT NULL, `disciplina` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Compartilhar este post Link para o post Compartilhar em outros sites
Jonatã Cioni 9 Denunciar post Postado Abril 21, 2012 q q tu tah tentando fazer??????????????????????? salvar o conteúdo do arquivo no banco, é isso msmo????????????????? não seria muito mais fácil você gravar somente o nome no banco????????????????? Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Abril 21, 2012 você tem que definir quais campos que receberão a inserção $qry = "INSERT INTO upload (campo, campo2, campo3) VALUES (0,'$nome','$conteudo','','','','$tipo','','$titulo','')"; Compartilhar este post Link para o post Compartilhar em outros sites
Anderson web 1 Denunciar post Postado Abril 22, 2012 você deve guardar a imagem em uma pasta e incluir apenas o nome do arquivo no banco de dados. Abaixo tem um exemplo simples de como você insere o arquivo na pasta. Após incluir você insere o nome do arquivo no banco de dados. if(isset($_FILES['arquivo']['name'])) { $uploaddir = 'documentos/'; $uploadfile = $uploaddir . $_FILES['arquivo']['name']; if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploaddir . $_FILES['arquivo']['name'])) { //print "O arquivo é valido e foi carregado com sucesso. Aqui esta alguma informação:\n"; } } Compartilhar este post Link para o post Compartilhar em outros sites
gcslds 0 Denunciar post Postado Abril 23, 2012 q q tu tah tentando fazer??????????????????????? salvar o conteúdo do arquivo no banco, é isso msmo????????????????? não seria muito mais fácil você gravar somente o nome no banco????????????????? Isto mesmo. Estou tentando gravar o arquivo no DB. Vou tentar gravar somente o nome...Obrigado! você deve guardar a imagem em uma pasta e incluir apenas o nome do arquivo no banco de dados. Abaixo tem um exemplo simples de como você insere o arquivo na pasta. Após incluir você insere o nome do arquivo no banco de dados. if(isset($_FILES['arquivo']['name'])) { $uploaddir = 'documentos/'; $uploadfile = $uploaddir . $_FILES['arquivo']['name']; if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploaddir . $_FILES['arquivo']['name'])) { //print "O arquivo é valido e foi carregado com sucesso. Aqui esta alguma informação:\n"; } } Olá Anderson Web! Pensei em gravar o arquivo direto no DB porque desejo que o arquivo fique em uma área restrita. Se colocar em algum diretório qualquer pessoa na web vai fazer o download. Este é um dos meus principais desafios... Obrigado pela resposta! Compartilhar este post Link para o post Compartilhar em outros sites
Jão Bosco de barros 0 Denunciar post Postado Abril 23, 2012 Qual tipo de arquivo você ta querendo upar? ta ligado que isso vai ficar uma lentidão danada né? Compartilhar este post Link para o post Compartilhar em outros sites
unknown7 0 Denunciar post Postado Abril 23, 2012 há uma funçao que faz isso. Compartilhar este post Link para o post Compartilhar em outros sites
gcslds 0 Denunciar post Postado Abril 24, 2012 Qual tipo de arquivo você ta querendo upar? ta ligado que isso vai ficar uma lentidão danada né? Fala Jão! Gostaria de fazer o upload de arquivos: PDF, DOC, DOCX, TXT, ODT, XLS, XLSX, PPT. Compartilhar este post Link para o post Compartilhar em outros sites