Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
<span style='font-size:14pt;line-height:100%'>Upload de foto e salvando o path no banco</span>
Como tenho visto bastante gente com duvidas sobre como salvar a imagem num banco de dados ,resolvi postar um exemplo simples
index.html:
<html>
<head>
<title>Upload</title>
</head>
<body bgcolor = "#FFFFFF" text = "#000000">
<form name = "form1" method = "post" action = "upload.php" enctype = "multipart/form-data">
<input type = "file" name = "arquivo">
<input type = "submit" name = "Submit" value = "Enviar">
</form>
</body>
</html>
upload.php:
<?php
//Fabyo Guimaraes
//se existir o arquivo
if(isset($_FILES["arquivo"])){
$arquivo = $_FILES["arquivo"];
$pasta_dir = "arquivos/";//diretorio dos arquivos
//se nao existir a pasta ele cria uma
if(!file_exists($pasta_dir)){
mkdir($pasta_dir);
}
$arquivo_nome = $pasta_dir . $arquivo["name"];
// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);
//conecta no banco
$cn = mysql_connect("localhost");
mysql_select_db("banco");
//aqui salva no banco o path da foto
<font face="verdana">mysql_query("INSERT INTO tabela VALUES ('', '$arquivo_nome')");
mysql_close($cn); </font>
}
?>
aqui você lista as fotos que estao no banco
listar.php:
<?php//Autor Fabyo Guimaraes
//conecta no banco
<font face="verdana">$cn = mysql_connect("localhost");
mysql_select_db("banco"); </font>
//seleciona a tabela
<font face="verdana">$sql = "Select * from tabela";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query)){
$fotos = $row["fotos"];
echo "<img src=\"$fotos\">
";
} </font>
?>você acrescentou mais um campo no seu script entao você precisa acrescentar no banco tbm e tenta ver uma linha antes se você esqueceu de colocar ( ; )
Parece bom, vou experimentar.
E se a pessoa nao fizer o upload, qual serio o código para o caso de nao se passar nenhum valor?
Ue cara...coloca um valor default....
no caso eu tenho um formulário que o cliente cadastra os imóveis no bd. Bom, depois que ele preencher todo o formulário, o último campo seria pra ele fazer o upload das fotos, no caso até 4 fotos, como seria para implantar esse código no meu form, sendo que o path teria que ser gravado junto com a inserção dos dados do form, e as fotos teriam que ir para a pasta. No caso eu não terei a página upload.php?Abraços
Caras upload é mole difícil é thumbs ou controle se o arquivo já existe criar outro nome.
Abaixo um script com o formulário e o script no mesmo arquivo... basta lembrar de que adotarei a conexão através de um require*
<form action="teste.php?opercao=upload" method="post" enctype="multipart/form-data" name="form1" target="_self">
Arquivo:
<input name="file" type="file" size="50" maxlength="50">
<br>
Descrição:
<input name="descricao" type="text" size="50" maxlength="50">
<br>
<input type="submit" name="Submit" value="enviar">
</form>
<?php
require("conection.php"); // arquivo onde contem parametros de conexão com o MYSQL
if((isset($_GET['operacao'])) && ($_GET['operacao'] == "upload")) // recebe váriáves
{
$file = $_FILES['file']['name'];
$file_size = $_FILES['file']['size'];
$descricao = $_POST['descricao'];
// mude para o diretório que você quizer a partir da raiz do site
$diretorio = "diretoriodestino/";
// tamanho em bytes do seu arquivo - Especifique o tamanho desejado
$max_file_size = 16000; // mais ou menos 120x120 (avatar)
// caso não seja inserido um arquivo
if(empty($file)
{
echo "<center>Arquivo não existente, você deve enviar um arquivo</center>";
echo '<meta http-equiv="refresh" content="3; URL=teste.php">';
}
// caso o arquivo seja maior do que o desejado
elseif ($file_size > $max_file_size)
{
echo "<center>Arquivo muito grande</center>";
echo '<meta http-equiv="refresh" content="3; URL=teste.php">';
}
// se tudo der ok..... prossegue enviando e salvando
else
{
// move o arquivo do temp para o diretório especificado + nome do arquivo
move_uploaded_file($_FILES['avatar']['tmp_name'], $diretorio.$file);
// Grava no banco de dados
$gravar = mysql_query("INSERT INTO tabela (arquivo, descricao) VALUES ('$file', '$descricao')", $con);
//$con = conexão com MYSQL -- >> require("conection.php");
}
}
?>
espero que ajude..... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
A propósito... mandar váris fotos de uma só vez não fica muito mestavel apesar de possuirmos banda larga... pode dar pau no max_upload.....
Ola, eu tentei efetuar o codigo em minha maqina.
Estou tendo a seguinte mensagem de erro:
Parse error: parse error in c:\web\upload\upload.php on line 28
Acredito que o erro seja no bd.
Se puder colar o txt de criação das tabelas fico grato.
Puts é o que to procurando, mas ainda nao compreendi.
o ultimo script postado nunca vai funcionar se não colocar esta linha diferentemove_uploaded_file($_FILES['avatar']['tmp_name'], $diretorio.$file);seguindo a logica seria assimmove_uploaded_file($_FILES['file']['tmp_name'], $diretorio.$file);e se eu fosse usar este script colocaria um if(is_dir($diretorio)) para ver se existe i diretorio de caso contrario faz um mkdir();... so pra garantir...T+
galera...nem aparece minha página...haiuhaiuhfa
Alguem pode me ajudar...Pra mim ta aparecendo este erro ao tentar fazer o move_Upload
Warning: move_uploaded_file(arquivos/Moises0001.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in c:\Inetpub\wwwroot\teste\upload.php on line 15Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\PHP\uploadtemp\php3D.tmp' to 'arquivos/Moises0001.jpg' in c:\Inetpub\wwwroot\teste\upload.php on line 15
esse problema é de permissao, de um CHMOD na pasta via php ou via FTP
Pode crer Fabyo... na verdade eu so Redefini Permissão do Usuario Anonimo de Web para poder criar arquivos nesta pasta e foi de boa... Muito obrigado pela ajuda cara...
Fabyo eu again...Cara, se a pessoa deixar o campo foto em branco vai apresentar erro. Como fazer para, caso ela deixar o campo foto em branco, o Form pegar a foto que ja esta hospedada no servidor?
Eu nao tenho duvidas no script e so uma duvida de opções.Eu to fazendo um site aqui e ele tem galeria de fotos. so que em vez de eu guardar o nome da foto no BD eu to guardando endereço onde elas estão.Ai na pagina que exibe as fotos eu leio o diretorio inteiro atraz das img e mostro todas elas na pagina. Qual desses modos você me recomendaria +?Colocar o link de todas no BD? ou ler o diretorio? Eu acho q ler o diretorio ele carrega muito, e ja com o BD eu tbm posso colocar a opção de comentarios em cada foto ne?mas queria saber a opnião da galera ai..Abraços
Aproveitando a dúvida, depois do upload imagem na pasta e nome no BD, como faço pra apagar as imagens depois? Tentei fz mas não funcionou.Valeu..=)
como você ta fazendo?
você precisa ter permissao para poder apagar
da algum erro ?
ngm tem um script para salvar imagens como BLOB e recupera-las na interface???
http://forum.imasters.com.br/index.php?showtopic=206339
se deseja renomear o arquivo, evita fazer um if para saber se ja existe
Grande Fábio, mto bom este tutorial, só q eu não to conseguindo faze o upload..tah dando o seguinte erro...Parse error: parse error, unexpected T_STRING in /home/axs/public_html/test_news/upload.php on line 35sendo que a linha 35 do meu script eh essa:mysql_query("INSERT INTO axs_fotos (arquivo) VALUES ('$arquivo_nome')");o meu banco de dados possui dois campos: id que eh chave primaria e auto incrementavel e arquivo para armazenar o path da foto...Acho que estou no caminho certo, só preciso de sua ajuda pois não sei do que se trata ese erro.Abrass
Boa tarde gente,to precisando de ajuda. muita ajuda. vi esse script de upload salvando no patch o caminho. so o que ta acontecendo. ele salva a imagem numa boa so que nao salva n o patch o caminho. ele nao da erro nenhum. eu coloquei um if simples so pra saber se tinha resultado o sql. e da erro . meu sql segue abaixo.$sql = mysql_query("INSERT INTO fotos(id, foto) VALUES ('$id', '$arquivo_nome')"); if($sql !=0){ echo "Foto inserida."; } else{ echo "Erro ao inserir a foto do banco."; }}//$id eu to pegando o id do usuário ou da noticia se fosse o caso que esta inserida no banco de dadosse aguem poder me ajudar eu agradeço muito .. vlw..
você da um echo no $arquivo_nome ele mostra o que?
quando do um cho no arquivo ele me mostra o caminho arquivos/php_artigo105.zipmais salva esse caminho.
se ta salvando o caminho, tem que ver na hora que você exibe a foto, se ta exibindo com o caminho correto
Grande Fábio,
Estive executando este passo a passo,porém, no upload surge a seguinte mensagem:
Parse error: parse error in c:\serv-n\www\bcoimagem\upload.php on line 27 e a referida linha é: mysql_query("INSERT INTO imagens VALUES ('','$formato', '$imagem')");
no arquivo listar.php, surge uma tela indecifravel e não a foto.
Por favor um helpppp.