Ir para conteúdo

POWERED BY:

Arquivado

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

Pedro Laxe

Como eu faço um sistema de upload de fotos com php e mysql?

Recommended Posts

olá eu sou programador iniciante de php e no meu painel de controle eu gostaria de colocar um sistema de upload de imagens jpg, png etc, usando o php e o mysql para gravar o titulo,imagem delas no bd

 

aguardo uma resposta obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um script comentado pra você:

formulario.html:

<form method="post" action="upload.php">
<input type="file" name="foto" /><br />
<input type="submit" name="upload" />
</form>

upload.php:

<?php

		if($_POST['upload']){

		$photo = $_FILES['foto'];

		preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $photo["name"], $ext); /* Pega extensão da imagem */

       	$nome_imagem = md5(uniqid(time())) . "." . $ext[1]; /* Gera um nome único para a imagem */

       	$caminho_imagem = "imagens/uploads/" . $nome_imagem; /* Caminho de onde ficará a imagem */

		move_uploaded_file($photo["tmp_name"], $caminho_imagem); /* Faz o upload da imagem para seu respectivo caminho */

		$sql = mysql_query("INSERT INTO tabela (endereco) VALUES ($nome_imagem)"); /* Insere os dados no banco */

		if($sql){

			echo "Upload feito com sucesso!";

		}

		}
?>

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo deu esse erros aqui

 

 

Notice: Undefined index: foto in C:\xampp\htdocs\renta\website\upload_foto.php on line 7

 

Notice: Undefined offset: 1 in C:\xampp\htdocs\renta\website\upload_foto.php on line 11

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$caminho_imagem = "imagens/uploads/" . $nome_imagem; /* Caminho de onde ficará a imagem */
?>

Espero ter ajudado.

 

Esse caminho é ralativo a raiz do Apache ou ao arquivo que está executando o script?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o caminho para a pasta no qual você quer mandar a imagem ao fazer o upload.

Exemplo:

  • Pasta de imagens do seu site: imagens
  • Como ficaria no código:
    $caminho_imagem = "imagens/" . $nome_imagem;


Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi. Dê uma olha, por favor. Onde está o erro nesse script?

 

<?php
if(isset($_POST['upload'])) {

$pasta     = 'upload';
$permitido = array('image/jpeg', 'image/jpg', 'image/pjpeg', 'image/png', 'image/fw.png');
$img       = $_FILLES['img'];	
$tmp       = $img['tmp_name'];
$name      = $img['name'];
$type      = $img['type'];

require('upload_func.php');

if(!empty($name) && in_array($type, $permitido)) {
	$nome = 'image/'.md5(uniqid(rand(), true)).'.jpg';
	upload($tmp, $nome, 650, $pasta);
} else {
	echo '<script type="text/javascript">alert("Imagem inválida");</script>';
}
}

?>
<form name="upload" action="" enctype="multipart/form-data" method="post">
<input type="hidden" name="postId" value="<?php echo $_GET['postId']; ?>" />
<input type="file" name="img" /><br />
<input type="submit" value="Upload" name="upload" />
</form>

 

upload_func.php

<?php
function upload($tmp, $nome, $largura, $pasta) {
	$img    = imagecreatefromjpeg($tmp);
	$x      = imagesx($img);
	$y      = imagesy($img);
	$altura = ($largura * $y) / $x;
	$nova   = imagecreatetruecolor($largura, $altura);
	imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
	imagejpeg($nova, "$pasta/$nome");
	imagedestroy($nova);
	imagedestroy($img);
	return($nome);
}
?>

 

Ele sempre cai no else. Porque? A biblioteca GD está ativa :)

 

Só pra ficar bem esclarecido, se minha pasta foto está dentro da pasta imagens e meu script está dentro da pasta includes, ficaria assim:

 

$caminho_imagem = "../imagens/foto/" . $nome_imagem;

 

??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui:

upload($tmp, $nome, 650, $pasta);

Provavelmente não existe a função upload.

Use o move_uploaded_file, assim:

$nome = 'image/upload/'.md5(uniqid(rand(), true)).'.jpg';
move_uploaded_file($tmp, $nome);

Documentação oficial:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas ^^, mas continua caindo no else. E sem ele não faz o upload...

 

Comentei algumas linhas e:

 

//if(!empty($name) && in_array($type, $permitido)) {
$nome = 'upload/'.md5(uniqid(rand(), true)).'.jpg';
move_uploaded_file($tmp, $nome);
/*} else {
echo '<script type="text/javascript">alert("Imagem inválida");</script>';
}*/

 

segundo o manual no link que você me passou, o move_uploaded_fille recebe dois parâmetros, o nome e o caminho da imagem, então tirei o image já que estou salvando direto na pasta upload

 

O f** é q não está gerando erro nenhum, eu fiz esse script seguindo uma video aula do Upinside, e pelo que o cara apresentou no video deveria funcionar do jeito que está ai. Você achou alguma coisa errada, pq pra mim tá tudo certo =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Fiz algumas alterações e resolveu o primeiro problema.

ficou assim:

 

if(!preg_match('/'.$permitido.'/', $type))

 

agora falta fazer o upload da imagem :pinch:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script completo até aqui, as duas formas, como estava antes e como está agora.

 

<?php
if(isset($_POST['upload'])) {
$pasta     = 'upload';
$permitido = array('jpeg', 'jpg', 'pjpeg', 'png', 'fw.png');
$img       = $_FILLES['img'];	
$tmp       = $img['tmp_name'];
$name      = $img['name'];
$type      = $img['type'];

require('upload_func.php');

if(!preg_match('/'.$permitido.'/', $type)) {

	/*Forma como eu queria que funcionasse*/
	$nome = md5(uniqid(rand(), true)).'.jpg';
	upload($tmp, $nome, 650, $pasta);

	/*Segunda forma*/
	$nome = 'upload/'.md5(uniqid(rand(), true)).'.jpg';
	move_uploaded_file($tmp, $nome);

} else {
	echo '<script type="text/javascript">alert("Imagem inválida");</script>';
}
}
?>

 

Posso estar viajando, mas nesse trecho aqui

if(!preg_match('/'.$permitido.'/', $type))

ele não deveria casar algum valor pra poder prosseguir?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz, era isso mesmo Gabriel. Agora foi das duas maneiras. Eu mantive a primeira pq eu quero redimensionar a imagem. De qualquer forma, vlw mesmo pela sua ajuda. Problema solucionado, pra mim pelo menos. Espero que sirva para o amigo de cima também :thumbsup: .

 

Caraca, é pq eu to com muito sono se não fazia isso agora, mas depois, não sei se seria aqui o local ideal, gostaria de postar um mini tutorial ensinando como fazer um upload e cadastro de imagem no banco de dados, incluindo a opção de alterar essa imagem e deletar a imagem antiga. Por favor, alguém me diga o local ideal para tal tarefa. Grato. :thumbsup:

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.