Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Renombrar ficheros al subir

Estas en el tema de Renombrar ficheros al subir en el foro de PHP en Foros del Web. Saludos, desarrollando un sistema me topé con el problema de como es un formulario público, varios usuarios podrian publicar un arhivo con el mismo nombre ...
  #1 (permalink)  
Antiguo 21/04/2013, 08:44
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Renombrar ficheros al subir

Saludos,

desarrollando un sistema me topé con el problema de como es un formulario público, varios usuarios podrian publicar un arhivo con el mismo nombre y para evitar eso se me ocurria colocarle el tiempo juntos a su nombre al archivo renombrandolo... lo q no se es como se haria... por ejemplo yo uso este código para subir mis archivos
Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$ediciondir'../directorio/';  
$uploaddir=$ediciondir;
if (!
is_dir($ediciondir)) {     mkdir($uploaddir0777);    }
move_uploaded_file($_FILES['archivo']['tmp_name'], $uploaddir $_FILES['archivo']['name']);    
$filename $_FILES['archivo']['name']; 
como haria para que archivo pase a ser archivo(fecha).extension?
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #2 (permalink)  
Antiguo 21/04/2013, 09:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Renombrar ficheros al subir

Aquí especifica el nombre de archivo que quieras:
Código:
move_uploaded_file($_FILES['archivo']['tmp_name'], $uploaddir . $_FILES['archivo']['name']);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 21/04/2013, 10:03
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Renombrar ficheros al subir

mmmmmmm eso lo se, pero como??? no entiendo, que debo cambiar?? para q el nombre sea por ejemplo archivo01022013.extension
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #4 (permalink)  
Antiguo 21/04/2013, 10:05
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Renombrar ficheros al subir

Cambia lo que está en negrita por el nombre y la ubicación que quieras, no tiene secreto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 21/04/2013, 10:08
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Renombrar ficheros al subir

$_FILES['archivo']['time()']???
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #6 (permalink)  
Antiguo 21/04/2013, 16:04
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Renombrar ficheros al subir

Disculpen que vuelva a escribir ...pero hice esto
Código PHP:
$ediciondir'../galeriaterm/';  
$uploaddir=$ediciondir;
if (!
is_dir($ediciondir)) {     mkdir($uploaddir0777);    }
$nombre md5(rand().time()).".".$info['extension'];
move_uploaded_file($_FILES['imagen']['tmp_name'], $uploaddir $_FILES['imagen']['name']);    
$filename $_FILES['imagen']['name']; 
aun no funciona.. que tengo mal?? lo unico que deseo es que si subo el archivo ejemplo.doc se llame ejepmlo02012013.doc
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #7 (permalink)  
Antiguo 21/04/2013, 16:07
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Renombrar ficheros al subir

En la función move_uploaded_file en vez de $_FILES['imagen']['name'] va tu nuevo nombre, en ese caso sería: $nombre.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 21/04/2013, 16:10
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Renombrar ficheros al subir

o sea que seria asi
Código PHP:
$ediciondir'../galeriaterm/';  
$uploaddir=$ediciondir;
if (!
is_dir($ediciondir)) {     mkdir($uploaddir0777);    }
$nombre md5(rand().time()).".".$info['extension'];
move_uploaded_file($_FILES['imagen']['tmp_name'], $uploaddir $nombre);    
$filename $_FILES['imagen']['name']; 
cierto?
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #9 (permalink)  
Antiguo 21/04/2013, 16:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Renombrar ficheros al subir

Así es, prueba y nos cuentas.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 21/04/2013, 16:13
Avatar de alex_dh  
Fecha de Ingreso: septiembre-2011
Ubicación: Kreuzberg
Mensajes: 235
Antigüedad: 13 años, 2 meses
Puntos: 14
Respuesta: Renombrar ficheros al subir

algo asi:
Código PHP:
Ver original
  1. $time = time();
  2. move_uploaded_file($_FILES['imagen']['tmp_name'], $uploaddir.$time.$_FILES['imagen']['name']);
__________________
Avanzado desarrollador HTML, CSS y programador PHP, MYSQL, JAVASCRIPT

=========CALLEJEROS INOCENTES=========
  #11 (permalink)  
Antiguo 21/04/2013, 16:15
Avatar de alex_dh  
Fecha de Ingreso: septiembre-2011
Ubicación: Kreuzberg
Mensajes: 235
Antigüedad: 13 años, 2 meses
Puntos: 14
Respuesta: Renombrar ficheros al subir

http://www.php.net/manual/es/functio...oaded-file.php
__________________
Avanzado desarrollador HTML, CSS y programador PHP, MYSQL, JAVASCRIPT

=========CALLEJEROS INOCENTES=========
  #12 (permalink)  
Antiguo 21/04/2013, 16:21
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Renombrar ficheros al subir

No me lo renombra, lo sigue subiendo con su mismo nombre

colocare el codigo completo

Código PHP:
$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$ediciondir'../clipping/';  
$uploaddir=$ediciondir;
if (!
is_dir($ediciondir)) {     mkdir($uploaddir0777);    }
$nombre md5(rand().time()).".".$info['extension'];
move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir $_FILES['img']['name']);    
$filename $_FILES['img']['name'];

  
$insertSQL sprintf("INSERT INTO clipping (id, img) VALUES (%s, %s)",
                       
GetSQLValueString($_POST['id'], "int"),
                       
GetSQLValueString($filename"text"));

  
mysql_select_db($database_azimut$azimut);
  
$Result1 mysql_query($insertSQL$azimut) or die(mysql_error());

  
$insertGoTo "ing_clipping.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));


formulario
Código PHP:
<form action="<?php echo $editFormAction?>" method="post" name="form1" id="form1" enctype="multipart/form-data">
        <br />
        <table align="center">

          <tr valign="baseline">
            <td align="right" nowrap="nowrap" class="textoprincipal"><div align="right"></div></td>
            <td><div align="left"><input type="hidden" name="id_prod" value="<?php echo $row_Recordset2['id']; ?>" />
            </div></td>
          </tr>

          <tr valign="baseline" bordercolor="#CCCCCC">
            <td align="left" valign="top" class="textoprincipal"><div align="right" class="text2">Imagen:</div></td>
            <td><div align="left">
              <input name="img" type="file" class="textoprincipal" id="img"  enctype="multipart/form-data" />
            </div></td>
          </tr>
          <tr valign="baseline">
            <td nowrap="nowrap" align="right">&nbsp;</td>
            <td><input type="submit" class="botones" value="Ingresar" /></td>
          </tr>
        </table>
        <input type="hidden" name="id" value="" />
        <input type="hidden" name="MM_insert" value="form1" />
      </form>
donde está mi error?
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #13 (permalink)  
Antiguo 21/04/2013, 16:29
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 17 años, 3 meses
Puntos: 28
Respuesta: Renombrar ficheros al subir

listo... encontre el error y era este

antes
Código PHP:
$ediciondir'../clipping/';  
$uploaddir=$ediciondir;
if (!
is_dir($ediciondir)) {     mkdir($uploaddir0777);    }
$nombre md5(rand().time()).".".$info['extension'];
move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir $_FILES['img']['name']);    
$filename $_FILES['img']['name']; 
despues
Código PHP:
$ediciondir'../clipping/';  
$uploaddir=$ediciondir;
if (!
is_dir($ediciondir)) {     mkdir($uploaddir0777);    }
$time time();
move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir.$time.$_FILES['img']['name']);    
$filename $time.$_FILES['img']['name']; // aqui estaba mi error 
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #14 (permalink)  
Antiguo 21/04/2013, 16:39
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Renombrar ficheros al subir

Así te va a concatenar el nombre anterior al final.

Deberías hacer algo así, como este ejemplo:

Código PHP:
Ver original
  1. $uploaddir = 'upload/';
  2. $ext = pathinfo($_FILES['img']['name'], PATHINFO_EXTENSION);
  3. $nombre = md5(rand() . time()) . "." . $ext;
  4. move_uploaded_file($_FILES['img']['tmp_name'], $uploaddir . $nombre);
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: ficheros, formulario, renombrar, usuarios
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 18:11.