Jump to content


Photo

Renomear Arquivo Ao Fazer Upload


  • Faça o login para participar
10 replies to this topic

#1 <?PHPMAN?>

<?PHPMAN?>

    Ativo

  • Usuários
  • 300 posts
  • Sexo:Não informado

Posted 11/02/2005, 10:37

Galera, to precisando um script de upload de imagem que renomeie o arquivo com um nome aleatorio( para nao sobscrever uma imagem existente) e que armazene o nome no banco de dados.
Nome: Luciano André Bruch
WebSite: www.guiamedianeira.com.br
Profissão: WebDesigner / Programador
MSN:luciano@guiamedianeira.com.br

#2 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 11/02/2005, 10:49

Eu faço o seguinte ... envio a foto.

//Inicia envio da foto
if (copy($fileFoto,"$url".$fileFoto_name)){
echo ("Foto enviada com sucesso!");
// este echo é exibido se a foto foi enviada corretamente
}else{
echo ("Erro no enviar a foto!");
// se a foto não foi enviada corretamente é exibida essa mensagem
}
//fim do envio da foto


Depois eu registro ela no BD.

$cadastrar = mysql_query("INSERT INTO equipe (nome, foto)
    VALUES ('$txtNome', '$fileFoto_name')");


Chamo uma outra página que vai renomear o último registro inserido no BD.

<a href="renomeia_foto.php">Cadastrado com sucesso.</a>


E essa é a página onde ele vai renomear a foto e vai dar um redirect para página que quiser.

<?
include "../../include/conexao.php";

$sql = mysql_query("
SELECT
  *
FROM
  equipe
ORDER BY idEquipe
DESC
LIMIT 1");

$total = mysql_num_rows($sql);

$dados=mysql_fetch_array($sql);
   
   //renomeia foto
    $renFoto = "foto".$dados[idEquipe];

$var3 = "/diretorio/".$dados[fotoG];
$var4 = "/diretorio/".$renFotoG;
rename($var3, $var4);
    $sql = mysql_query("UPDATE equipe SET foto='$renFoto' where idEquipe=".$dados[idEquipe]);

header ("Location: index.php");
?>


Edição feita por: wesley.tome, 11/02/2005, 10:52.

.................

#3 allan_bruno

allan_bruno

    Turista

  • Usuários
  • 44 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ

Posted 11/02/2005, 12:40

Cara, eu num entendi muito bem. Achei bem conveniente a pergunta do <?PHPMAN?> . Por exemplo, quero nomear a foto com um número. Progressivamente. Assim o usuário faz o upload, aí a foto é renomeada de acordo com a id dela. Eu não entendi como fazer para renomear de acordo com a ID.
Forte Abraço,
Allan Bruno
Learning and developing forever!!!

#4 mbleonardo

mbleonardo

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 11/02/2005, 12:53

Grave a última id num arquivo ou no banco de dados, pegue, adicione 1, use no arquivo para renomear a foto e grave novamente o id no arquivo ou bd

#5 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 11/02/2005, 14:44

eu mostrei a maneira que faço... primeiro faço todo procedimento depois renomeio a foto.. selecionando o último registro que fiz....
SELECT * FROM equipe ORDER BY idEquipe DESC LIMIT 1
.................

#6 Web Developer

Web Developer

    12 Horas

  • Usuários
  • 283 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre - RS
  • Interesses:Desenvolvimento Web.

Posted 11/02/2005, 14:59

Se é o que entendi, na hora de inserir, você insere junto com o nome dela o ID (auto_increment).

$sql = "INSERT INTO FOTOS ID,NOME values ('','".$nome."')";

Depois altera:

$update = "UPDATE SET FOTOS NOME = ID";

Gambiarra! hahahaha! fuui
PHP não é coisa pra muleque!

#7 H3NR!QU3

H3NR!QU3

    Progamador PHP!

  • Usuários
  • 1032 posts
  • Sexo:Não informado
  • Localidade:cuiaba MT
  • Interesses:programação... PHP,JAVA,C++ ,c,c# asp, asp.net e delph

Posted 11/02/2005, 15:00

pra renomeia use a função rename

veja
http://br.php.net/ma...tion.rename.php

e copy pra upload
veja:
http://br.php.net/ma...nction.copy.php


T+ (y)

#8 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 11/02/2005, 15:29

pra nomear com numeros em sequencia é só criar um campo (int) no SQL e colocar a opção auto_increment. A cada novo registro nesse campo ele adiciona 1 no valor atual.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#9 mbleonardo

mbleonardo

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 11/02/2005, 17:16

Dica: Use move_uploaded_file() ao inves de copy(), como o Henrique falou.
Vc não precisar fazer o upload e depois renomear o arquivo:

<?php
$novo_nome="01.gif";

move_uploaded_file($arquivo,"DIRETORIO/$novo_nome");
?>


#10 H3NR!QU3

H3NR!QU3

    Progamador PHP!

  • Usuários
  • 1032 posts
  • Sexo:Não informado
  • Localidade:cuiaba MT
  • Interesses:programação... PHP,JAVA,C++ ,c,c# asp, asp.net e delph

Posted 11/02/2005, 20:10

Dica: Use move_uploaded_file() ao inves de copy(), como o Henrique falou.
Vc não precisar fazer o upload e depois renomear o arquivo:

<?php
$novo_nome="01.gif";

move_uploaded_file($arquivo,"DIRETORIO/$novo_nome");
?>

sim mais pq? não usar o copy? bom tanto faz os dois tem o mesmo efeito a unica diferencia que o move_uploaded_file() so aceita se os dados vim de um formulario jah o copy não... :)

#11 <?PHPMAN?>

<?PHPMAN?>

    Ativo

  • Usuários
  • 300 posts
  • Sexo:Não informado

Posted 14/02/2005, 09:24

Na verdade eu tava precisando de um script que gerasse um nome aleatorio para cada imagem enviada ao servidor, isso porque se o usuario enviasse uma foto com o nome igual a uma foto ja existente ela sobscrevia a mesma deixando somente a ultima enviada.

Mas ja resolvi o problema de outra forma, renomeio a imagem com a data e hora em que ela foi enviada.

EX: 12_02_2005_104953.jpg

Abaixo vai o script:

<?
	include "connect_boletim.php";

	$id = $_POST[id];
	$titulo = $_POST[titulo];
	$texto = $_POST[texto];
	$arquivo = $_FILES[foto];
	$nome = $_POST[nome];
	$descricao = $_POST[descricao];
	$local = $_POST[local];

	if($arquivo["name"] != "")
	{
  $nome_dia="".date("d")."_".date("m")."_".date("Y")."_".date("his").""; 
  $aux = explode(".",$arquivo["name"]	);
  $i=0;
  $ext="";
  while($aux[$i] != "")
  {
 	 $ext=$aux[$i];
 	 $i++;
  }
  $destino= "/paginas/www.meuservidor.com.br/html/unimed/fotos/$nome_dia.$ext";
  //echo $destino;
  @copy("$arquivo[tmp_name]","$destino") or die("Erro na cópia do arquivo $arquivo[name]! verifique a permissão do seu diretório!");
	}	
	$sql = "insert into unimed_boletim
    (id, titulo, texto, foto, nome, descricao, local) 
 	 values 
    ('$id', '$titulo'  ,'$texto', '$nome_dia.$ext', '$nome', '$descricao', '$local')";
	$resultado = mysql_query($sql)or die ("Não foi possível inserir o boletim".mysql_error());
	
	$msn ="<font size=2 face=Verdana color=red> <b>Boletim cadastrado com sucesso. !!!</b></font>";
	echo "<script language='JavaScript'>window.location.href='listar_boletim.php'</script>";
?>

Nome: Luciano André Bruch
WebSite: www.guiamedianeira.com.br
Profissão: WebDesigner / Programador
MSN:luciano@guiamedianeira.com.br




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq