Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gcslds

Upload de arquivos utilizando MySQL

Recommended Posts

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.