Foros del Web » Programando para Internet » PHP »

Renombrar una imagen

Estas en el tema de Renombrar una imagen en el foro de PHP en Foros del Web. Hola a todos, se me quedo una cosa sin responder, a ver si alguno sabria decirme como renombrar una imagen antes de subirla, ya que ...
  #1 (permalink)  
Antiguo 30/05/2009, 12:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Renombrar una imagen

Hola a todos, se me quedo una cosa sin responder, a ver si alguno sabria decirme como renombrar una imagen antes de subirla, ya que para evitar imagenes duplicadas me gustaria renombrarlas el codigo que tengo y que las sube con su nombre original es este:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "registro")) {
$insertSQL = sprintf("INSERT INTO usuarios (nombre, sexo, localidad, imagen, nick, email, contra, busco) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['nombre'], "text"),
GetSQLValueString($_POST['sexo'], "text"),
GetSQLValueString($_POST['localidad'], "text"),
GetSQLValueString("archivos/" . $_FILES['imagen'] ['name'], "text"),
GetSQLValueString($_POST['nick'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['contra'], "text"),
GetSQLValueString($_POST['aquibusco'], "text"));
$copy = copy($_FILES['imagen']['tmp_name'], "archivos/" . $_FILES['imagen']['name']);

mysql_select_db($database_quedada, $quedada);
$Result1 = mysql_query($insertSQL, $quedada) or die(mysql_error());

Un saludo y gracias
  #2 (permalink)  
Antiguo 30/05/2009, 16:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Renombrar una imagen

Para renombrar una image tu la pasas al servidor primero y luego con el

copy("NOMBRE_ORIGINAL.jpg", "DIRECTORIO/NOMBRE_NUEVO.jpg");
  #3 (permalink)  
Antiguo 30/05/2009, 19:19
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Renombrar una imagen

Es mejor usar move_uploaded_file()
  #4 (permalink)  
Antiguo 30/05/2009, 20:47
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Renombrar una imagen

hola abimaelrc supongo que "nombre original" te refieres a ['tmp_name'] pero como saco un nombre aleatorio antes de subirla y que ese mismo nombre me lo inserte en la BD?
  #5 (permalink)  
Antiguo 30/05/2009, 21:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Renombrar una imagen

Código php:
Ver original
  1. // $len es la longitud que deseas que tenga el nuevo nombre
  2. function random_name($len) {
  3.     $chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
  4.     $name = '';
  5.     for ($i = 0; $i < $len; ++$i)
  6.         $name .= substr($chars, (mt_rand() &#37; strlen($chars)), 1);
  7.     return $name;
  8. }
  9.  
  10. // Asegurate de agregar la extension correcta
  11. $nuevo_nombre = random_name(15) . '.extension';
  12.  
  13. // Luego en tu consulta:
  14. GetSQLValueString("archivos/" . $nuevo_nombre, "text"),
  15.  
  16. // Finalmente, en vez de copy haces un move_uploaded_file
  17. if(move_uploaded_file($_FILES['imagen']['tmp_name'], $nuevo_nombre))
  18.     echo 'Registro insertado y archivo creado correctamente';
  19. else
  20.     echo 'Registro creado y el archivo no pudo crearse';

Edito:

En $name .= substr($chars, (mt_rand() & #37; strlen($chars)), 1); debe ser signo de porcentaje %
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 31/05/2009, 00:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Renombrar una imagen

usa lo que te dio triby pero cambiale lo que dice & #37 a %
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:56.